我想回到之前的提交记录,但不想删除当前的提交记录。应该如何操作?使用 git reset HARD 命令会删除当前的提交记录,对吗?
我想回到之前的提交记录,但不想删除当前的提交记录。应该如何操作?使用 git reset HARD 命令会删除当前的提交记录,对吗?
git checkout $OLD_COMMIT
将带您到那里,git checkout $BRANCH
将带您回来。git checkout --help
, 但如果您只想在旧版本上运行测试或类似操作,那应该没问题。git stash
- 暂时存储未提交的更改
git show $SHA1
显示旧提交的更改差异
git show ${REF}:${PATH}
显示 $REF 中 $PATH 的内容使用git revert
。这样可以撤销特定的提交,而不会影响之后的提交。
如果我正确理解您的情况,您有:
* abc123de a_good_commit
* bc123def a_bad_commit
* c123def4 another_good_commit
您可以使用 git revert HEAD^
或使用特定的哈希值:git revert bc123def
。
对先前提交进行任何类型的重置
将从您的分支中删除后续的提交,使它们不再是其一部分。 提交是您执行git log
时看到的项目。
这并不意味着这些提交会立即被销毁,但由于您的意图不是要摆脱它们,因此您可能希望创建另一个分支并使用该分支查看以前的提交,以便您的原始分支保留最新的提交。 (创建新分支的关键字是:git branch <name>
或git checkout -b <name>
。**)
硬重置与软重置更多地涉及到工作树中的文件以及未提交的更改会发生什么。 实质上,当您指定--hard
时,唯一被销毁的是您未提交的更改。 只要您在最新的提交处留下了一个分支(或者您记得提交ID),您就可以通过切换回该分支或提交来恢复文件。 (即git checkout
)
** 您实际上可以在不创建额外分支的情况下四处查看,Daniel Pittman的答案描述了这一点。