跳至主要内容

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

进一步阅读