临时切换工作副本到特定的Git提交

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

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

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

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

136986 次浏览

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

首先,使用git log查看日志,选择你想要的提交,记下用于识别提交的sha1哈希值。接下来,运行git checkout hash。在你完成之后,git checkout 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}将带你回到两个__abc1之前的分支,其他数字也是如此。如果你能记得你在哪里得到了更大的数字,你应该得到某种奖章。


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

我曾经实现git checkout @{10}并且工作正常,然后突然我的大杯焦糖咖啡掉在PC和....上