跳至主要内容

在 GitHub Desktop 中检出提交

您可以使用 GitHub Desktop 检出存储库中的上一个提交。

关于检出提交

检出提交允许您查看存储库的先前状态,而无需创建新分支或修改现有分支。这在调试时很有用,因为它允许您查看存储库中是否存在上一个提交中的错误。

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

注意:在“分离的 HEAD”状态下进行的任何提交在切换分支时都会丢失,因为这些提交尚未在命名分支上进行。如果您需要恢复丢失的提交,请参阅“故障排除”。

检出提交

  1. 在左侧边栏中,单击历史记录

    Screenshot of the "History" tab in the sidebar. Above a list of commits, the tab button, labeled "History", is highlighted with an orange outline.

  2. 右键单击您要检出的提交,然后选择检出提交

    Screenshot of a list of commits in the "History" tab. Next to a commit, in a context menu, the "Checkout Commit" option is highlighted with an orange outline.

  3. 存储库栏中的 当前分支项目现在将显示“分离的 HEAD”,以及已检出的提交的 SHA。

    Screenshot of the repository bar. The "Current Branch" item shows a "Detached HEAD" state and is highlighted with an orange outline.

  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: 测试功能 行是我们想要恢复的提交,因为它是在存储库处于“分离的 HEAD”状态时进行的。要恢复它,你可以运行 git cherry-pick 8bd5e736a2,将提交应用到存储库中的当前分支。

延伸阅读