如何切换到特定的Git提交而不丢失所有的提交之后?

我希望本地文件将被更改,但提交的数据库将保持不变,只有当前位置指针被设置为当前选定的提交。

我想改变文件的状态到特定的提交,运行项目,当完成时,将文件恢复到上次提交。

如何做到这一点,而不压缩整个项目的文件夹?


当前回答

首先,使用git log查看日志,选择你想要的提交,记下用于识别提交的sha1哈希值。接下来,运行git checkout hash。完成之后,git签出original_branch。这样做的优点是不移动HEAD,它只是将工作副本切换到特定的提交。

其他回答

除了向你展示如何git checkout <the-hash-you-want>的其他答案外,值得知道的是,你可以切换回你使用的地方:

git checkout @{-1}

这通常比:

git checkout what-was-that-original-branch-called-again-question-mark

正如您可能预期的那样,git checkout @{-2}将带您回到两次git签出之前的分支,对于其他数字也是如此。如果你能记得你在哪里得到了更大的数字,你应该得到某种奖章。


遗憾的是,对于生产力来说,git checkout @{1}并不能带你到你未来将在的分支,这是一个遗憾。

首先,使用git log查看日志,选择你想要的提交,记下用于识别提交的sha1哈希值。接下来,运行git checkout hash。完成之后,git签出original_branch。这样做的优点是不移动HEAD,它只是将工作副本切换到特定的提交。

如果你在mybranch的某个分支,继续,git签出commit_hash。然后你可以通过git checkout mybranch返回到你的分支。我今天有同样的游戏平分一个bug:)此外,你应该知道git平分。