关于检出提交
检出提交允许您查看存储库的先前状态,而无需创建新分支或修改现有分支。这在调试时很有用,因为它允许您查看存储库中是否存在上一个提交中的错误。
检出提交会使您的存储库处于“分离的 HEAD”状态。在 Git 术语中,“HEAD”是引用,它指向存储库中命名分支的提示或最新提交。处于“分离的 HEAD”状态意味着 HEAD 引用特定提交,但不在存储库中的命名分支上。
注意:在“分离的 HEAD”状态下进行的任何提交在切换分支时都会丢失,因为这些提交尚未在命名分支上进行。如果您需要恢复丢失的提交,请参阅“故障排除”。
检出提交
-
在左侧边栏中,单击历史记录。
-
右键单击您要检出的提交,然后选择检出提交。
-
存储库栏中的 当前分支项目现在将显示“分离的 HEAD”,以及已检出的提交的 SHA。
-
要退出“分离的 HEAD”状态,您需要切换分支。有关更多信息,请参阅“在 GitHub Desktop 中管理分支”。
故障排除
您可以使用 Git 命令行中的 git reflog
命令恢复在“分离的 HEAD”状态下进行的提交。您可以通过转到菜单栏、选择存储库,然后单击在命令行中打开,在 GitHub Desktop 中的命令行中打开存储库。
git reflog
命令将显示存储库中发生的事件的输出,包括提交。以下是 git reflog
命令的示例输出
81fa9136f8 (HEAD -> main) HEAD@{0}: checkout: moving from 8bd5e736a27a52a7e36a856b30e6f0582d341aa1 to main
8bd5e736a2 HEAD@{1}: commit: testing out a feature
22fa76c125 HEAD@{2}: checkout: moving from main to 22fa76c1250a2847305b9325752d941dbaa55983
8bd5e736a2 HEAD@{1}: commit: 测试功能
行是我们想要恢复的提交,因为它是在存储库处于“分离的 HEAD”状态时进行的。要恢复它,你可以运行 git cherry-pick 8bd5e736a2
,将提交应用到存储库中的当前分支。
延伸阅读
- 分离的 HEAD 在 Git 文档中
- Git cherry-pick 在 Git 文档中