回到特定的提交然后回到现在

Jür*_*aul 34 git

我想在过去看到来自特定提交的文件,我正在考虑git reset --hard但是我将无法看到超出该提交的提交.如何返回提交(连同文件状态),查看文件,再次转到现在?

Mar*_*air 58

假设您当前的分支是master旧提交a1b2c3,那么您可以将工作树中的所有文件更改回旧提交:

git checkout a1b2c3
Run Code Online (Sandbox Code Playgroud)

...并返回master:

git checkout master
Run Code Online (Sandbox Code Playgroud)

这种在你的git历史中跳转的方式(即检查带有对象名称的提交,也称为hash或SHA1sum)对于找到以前的好提交非常有用git bisect,例如,因为它不会移动你的分支.

要记住的一件事是,在执行此操作时,您将收到一个可能令人困惑的警告:如果您从其对象名称(a1b2c3)中检出提交将使您进入称为"分离的HEAD"的状态,其中HEAD,通常代表您当前的分支,而不是直接指向特定的提交.这不是值得担心的 - 它对于在历史中移动非常有用 - 但它确实意味着如果在HEAD分离时创建新提交,它们将不会向前移动分支.


fork0在下面的注释中指出了可能有用的快捷方式git checkout -,它将检查HEAD指向的前一个分支或提交.

  • 有一种更安全的方式可以回到之前的提交:`git checkout -`.此方法使用结帐日志记录(.git/logs/HEAD)并可以安全地确定先前的提交内容. (5认同)
  • “独立的头” — Linus必须是Mortal Kombat的粉丝。:) (3认同)