如何切换到特定的Git提交而不会丢失之后的所有提交?
我希望更改本地文件,但是提交'数据库将保持不变,只有当前位置指针设置为当前选定的提交。
我想将文件的状态更改为特定的提交,运行项目,完成后,将文件恢复到上次提交。
如何在不压缩整个项目文件夹的情况下执行此操作?
答案 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}
并没有带您到将来要去的分支机构,这真是令人遗憾。