让我说我已多次承诺。现在我想回到某个提交并查看当时我的工作目录是什么样的(我实际上希望我的工作目录在我做的时候改变)。最后回到原始头部而不搞乱我的提交?!
我知道这应该很容易,我似乎无法找到合适的命令。谢谢。
答案 0 :(得分:8)
要查看给定的提交,请使用git checkout
:
git checkout <SHA1 of commit>
要返回原始分支,请查看:
git checkout master
一对夫妇注意到:
如果您有未提交的修改,则结帐可能会失败。您可能想先提交或stash他们。
当你检查出不是分支的东西时,你最终会进入detached HEAD状态;也就是说,你的HEAD没有提到分支 - 惊喜!这意味着,特别是,如果您进行提交,它将不在分支上。如果要提交,请务必检查分支。如果您的目的是提交您正在签出的提交,您可以检查它并同时创建一个分支:git checkout -b new-branch <SHA1 of commit>
答案 1 :(得分:1)
git checkout <sha of old commit>
然后,当你完成后,只需git checkout master
或任何你想去的地方。
答案 2 :(得分:1)
在Jefromi的答案中创建一个分离的HEAD可能会做你想要的。
如果您告诉我们您的潜在动机,我们可以为您提供更多有用的答案。例如,如果有问题的提交是一个重要的里程碑,那么也许你想标记它以给它一个有意义的名字:
git tag -a -m 'Release 1.0' v1.0 <sha1>
其他可能性:
git checkout -b my-branch-name <sha1>
git show <sha1>:foo.c
git diff <sha1> HEAD
git diff <sha1> HEAD -- xyz.cpp