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

时间:2012-04-19 14:37:24

标签: git commit temporary

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

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

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

如何在不压缩整个项目文件夹的情况下执行此操作?

3 个答案:

答案 0 :(得分:316)

如果您在某个分支mybranch,请继续git checkout commit_hash。然后,您可以通过git checkout mybranch返回到您的分支。今天我有同样的游戏将一个错误分成两部分:)另外,你应该知道git bisect

答案 1 :(得分:50)

首先,使用git log查看日志,选择所需的提交,记下用于标识提交的sha1哈希值。接下来,运行git checkout hash。完成后,git checkout original_branch。这样做的好处是不移动HEAD,它只是将工作副本切换到特定的提交。

答案 2 :(得分:5)

除了此处显示的其他答案之外,还向您展示了如何git checkout <the-hash-you-want>,值得一提的是,您可以切换回使用的位置:

git checkout @{-1}

这通常比以下更方便:

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

如您所料,git checkout @{-2}将带您回到git checkout两年前的分支,其他号码也是如此。如果您能记住大数字所在的位置,那么您应该为此获得某种奖章。


为提高生产力而感到遗憾的是,git checkout @{1}并没有带您到将来要去的分支机构,这真是令人遗憾。