{"meta":{"title":"在 GitHub Desktop 中签出提交","intro":"可以使用 GitHub Desktop 签出存储库以前的提交。","product":"GitHub Desktop","breadcrumbs":[{"href":"/zh/desktop","title":"GitHub Desktop"},{"href":"/zh/desktop/managing-commits","title":"管理提交"},{"href":"/zh/desktop/managing-commits/checking-out-a-commit-in-github-desktop","title":"签出提交"}],"documentType":"article"},"body":"# 在 GitHub Desktop 中签出提交\n\n可以使用 GitHub Desktop 签出存储库以前的提交。\n\n## 关于签出提交\n\n签出提交允许你查看以前状态的存储库，而无需创建新的分支或修改现有的分支。 这在调试时非常有用，因为签出提交允许你查看上次提交时存储库中是否存在错误。\n\n签出提交会使存储库处于“分离的 HEAD”状态。 在 Git 术语中，“HEAD”是指向存储库中命名分支的提示或最新提交的引用。 “分离的 HEAD”状态意味着 HEAD 引用特定的提交，但不是指向存储库中的命名分支。\n\n> \\[!NOTE]\n> 切换分支时，在“拆离的 HEAD”状态下所做的任何提交都将丢失，因为这些提交不是在命名分支上进行的。 如果需要恢复丢失的提交，请参阅“[故障排除](#troubleshooting)”。\n\n## 签出提交\n\n1. 在左边栏中，单击“历史记录”。\n\n   ![边栏中“历史记录”选项卡的屏幕截图。 在提交列表上方，标有“历史记录”的选项卡按钮以橙色轮廓突出显示。](/assets/images/help/desktop/history-tab-in-commit-sidebar.png)\n2. 右键单击要签出的提交，然后选择“**签出提交**”。\n\n![“历史记录”选项卡中提交列表的屏幕截图。在提交旁边的上下文菜单中，“签出提交”选项以橙色边框显示。](/assets/images/help/desktop/checkout-commit.png)\n\n1. 仓库栏中的 <svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-git-branch\" aria-label=\"git-branch\" role=\"img\"><path d=\"M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z\"></path></svg>“Current Branch”项现在将显示“Detached HEAD”，以及已签出的提交的 SHA\\*\\*\\*\\*。![存储库栏的屏幕截图。 “Current Branch”项显示“分离的 HEAD”状态，并以橙色轮廓突出显示。](/assets/images/help/desktop/branch-item.png)\n2. 若要退出“分离的 HEAD”状态，需要切换分支。 有关详细信息，请参阅“[在 GitHub Desktop 中管理分支](/zh/desktop/making-changes-in-a-branch/managing-branches-in-github-desktop#switching-between-branches)”。\n\n## 故障排除\n\n可以使用 Git 命令行中的 `git reflog` 命令恢复在“分离的 HEAD”状态下进行的提交。 可以转到菜单栏，选择 **“存储库”**，然后单击 **“在命令行中打开”**，从 GitHub Desktop 在命令行中打开存储库。\n\n`git reflog` 命令将显示存储库中发生的事件的输出，包括提交。 下面是 `git reflog` 命令的示例输出：\n\n```shell\n81fa9136f8 (HEAD -> main) HEAD@{0}: checkout: moving from 8bd5e736a27a52a7e36a856b30e6f0582d341aa1 to main\n8bd5e736a2 HEAD@{1}: commit: testing out a feature\n22fa76c125 HEAD@{2}: checkout: moving from main to 22fa76c1250a2847305b9325752d941dbaa55983\n```\n\n`8bd5e736a2 HEAD@{1}: commit: testing out a feature` 行是我们要恢复的提交，因为它是在存储库处于“分离的 HEAD 状态”时进行的提交。 若要进行恢复，可以运行 `git cherry-pick 8bd5e736a2`，将提交应用到存储库中的 Current Branch。\n\n## 其他阅读材料\n\n* ```\n            Git 文档中的[分离的 HEAD](https://git-scm.com/docs/git-checkout#_detached_head)\n  ```\n* Git 文档中的 [Git cherry-pick](https://git-scm.com/docs/git-cherry-pick)"}