Skip to main content

在 GitHub Desktop 中签出提交

可以使用 GitHub Desktop 签出存储库以前的提交。

关于签出提交

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

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

注意: 切换分支时,处于“分离的 HEAD”状态的任何提交都将丢失,因为这些提交未在命名分支上进行。 如果需要恢复丢失的提交,请参阅“疑难解答”。

签出提交

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

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

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

    “历史记录”选项卡中提交列表的屏幕截图。在提交旁边的上下文菜单中,“签出提交”选项以橙色轮廓突出显示。

  3. 存储库栏中的 Current Branch 项现在将显示“分离的 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,将提交应用到存储库中的 Current Branch。

其他阅读材料