用git走历史?

时间:2010-06-28 17:14:25

标签: git

让我说我已多次承诺。现在我想回到某个提交并查看当时我的工作目录是什么样的(我实际上希望我的工作目录在我做的时候改变)。最后回到原始头部而不搞乱我的提交?!

我知道这应该很容易,我似乎无法找到合适的命令。谢谢。

3 个答案:

答案 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