关于检出提交
检出提交允许您查看仓库的先前状态,而无需创建新分支或修改现有分支。这在调试时非常有用,因为它允许您查看错误是否存在于仓库的先前提交中。
检出提交会将您的仓库置于“分离的 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: testing out a feature
行是我们想要恢复的提交,因为它是在仓库处于“分离的 HEAD”状态时进行的。要恢复它,您可以运行git cherry-pick 8bd5e736a2
将提交应用到仓库中的当前分支。
进一步阅读
- 分离的 HEAD(Git 文档)
- Git cherry-pick(Git 文档)