Skip to main content

在 GitHub Desktop 中签出提交

你可以使用 GitHub Desktop 签出仓库中以前的提交。

关于检出某个提交

通过签出某次提交,你可以在无需创建新的分支或修改现有分支的情况下查看存储库的过去状态。 这在调试时非常有用,因为它允许你查看以前的提交中,存储库是否存在错误。

签出提交会使存储库处于“分离的 HEAD”状态。 在 Git 术语中,“HEAD”是参考指向存储库中某个命名分支末端或最新提交的引用。 “分离的 HEAD”状态意味着 HEAD 引用特定的提交,但不是指向存储库中的命名分支。

注意

切换分支时,在“拆离的 HEAD”状态下所做的任何提交都将丢失,因为这些提交不是在命名分支上进行的。 如果需要恢复丢失的提交,请参阅“故障排除”。

检出提交

  1. 在左边栏中,单击“历史记录”。

    边栏中“历史记录”选项卡的屏幕截图。 在提交列表上方,标有“历史记录”的选项卡按钮以橙色轮廓突出显示。

  2. 右键单击要签出的提交,然后选择“签出提交”。

           ![“历史记录”选项卡中提交列表的屏幕截图。在提交旁边的上下文菜单中,“签出提交”选项以橙色边框显示。](/assets/images/help/desktop/checkout-commit.png)
    
  3. 仓库状态栏中的“Current Branch”项现在将显示“Detached HEAD”,以及签出提交的 SHA。

    仓库状态栏的屏幕截图。 “Current Branch”项显示“分离的 HEAD”状态,并以橙色轮廓突出显示。

  4. 若要退出“分离的 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`,将提交应用到您存储库的当前分支。

其他阅读材料