关于签出提交
签出提交允许你查看以前状态的存储库,而无需创建新的分支或修改现有的分支。 这在调试时非常有用,因为签出提交允许你查看上次提交时存储库中是否存在错误。
签出提交会使存储库处于“分离的 HEAD”状态。 在 Git 术语中,“HEAD”是指向存储库中命名分支的提示或最新提交的引用。 “分离的 HEAD”状态意味着 HEAD 引用特定的提交,但不是指向存储库中的命名分支。
注意: 切换分支时,处于“分离的 HEAD”状态的任何提交都将丢失,因为这些提交未在命名分支上进行。 如果需要恢复丢失的提交,请参阅“疑难解答”。
签出提交
-
在左边栏中,单击“历史记录”。
-
右键单击要签出的提交,然后选择“签出提交”。
-
存储库栏中的 Current Branch 项现在将显示“分离的 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
,将提交应用到存储库中的 Current Branch。
其他阅读材料
- Git 文档中的分离的 HEAD
- Git 文档中的 Git cherry-pick