我想在过去看到来自特定提交的文件,我正在考虑git reset --hard
但是我将无法看到超出该提交的提交。如何返回提交(连同文件状态),查看文件,再次转到现在?
答案 0 :(得分:53)
假设您当前的分支是master
且旧提交是a1b2c3
,那么您可以将工作树中的所有文件更改回旧提交:
git checkout a1b2c3
...并使用以下内容返回master
git checkout master
这种在git历史记录中跳转的方式(例如,使用其对象名称检查提交,也称为哈希或SHA1sum)对于查找git bisect
的先前良好提交非常有用,例如,因为它不会移动你的分支。
要记住的一件事是,在执行此操作时,您将收到一个可能令人困惑的警告:如果您从其对象名称(a1b2c3
)检出提交,这将使您进入一个称为“分离的HEAD“,其中HEAD
通常代表您当前的分支,而是直接指向特定的提交。这不是值得担心的 - 它对于在历史记录中移动非常有用 - 但它确实意味着如果在分离HEAD
时创建新提交,它们将不会向前移动分支。
fork0在下面的评论中指出了可能有用的快捷方式git checkout -
,该快捷方式将检出HEAD
指向的上一个分支或提交。