回到 Github Desktop 中的先前提交

Going back to a previous commit in Github Desktop

我正在尝试使用 GitHub 桌面(即 GUI 应用程序 - 不是命令行)返回到之前的提交(在同一分支上)。我本以为是核心功能的东西,因为它是首先使用源代码管理的主要原因。

我知道可以还原提交,但这并不是我真正想要的,因为它会创建一个新的提交。我只想返回并选择再次前进,就像我可以跳到另一个分支一样。

这可能吗?还是 github 桌面的限制,我需要为此使用 cmd 行?

一般来说,您可以使用 git reset.

返回历史记录中的提交

GitHub 桌面版无法做到这一点。 GitHub Desktop 更像是一个同步存储库的工具,而不是功能齐全的 GUI 客户端。
但这并不意味着您必须使用命令行,因为还有其他选择。您可以找到一个列表 here。举几个(支持git reset):


以下是您如何在命令行上执行此操作。大多数客户在 UI 中使用相同的词汇表提供此功能(通常,您可以 select 提交并 通过上下文菜单重置

您将返回到上一个提交

git reset HEAD^

的更多提交(例如 3)
git reset HEAD^3

的特定提交
git reset f7823ab

请记住,默认情况下,选项 --mixed 会传递给 git reset。因此,自从您重置为该提交以来所做的所有更改将仍然存在。

要获得您想要 'revert' 的提交的原始状态,您必须通过 --hard。例如:

git reset f7823ab --hard

(编辑:Github 桌面缺少请求的命令;以下是一些不同操作的说明,您可能会发现它们很有用。)

1. Click History.  
2. In the commit history list, click the commit you'd like to revert.  
3. Right-click the commit and click Revert This Commit.  

文档来自 GitHub

如果您有尚未推送的提交,撤消提交很容易。当您有这样的提交时, "undo" 按钮会出现。它从分支的历史记录中删除提交并将文件放回更改区域。

这是关于@SevenEleven 的回答的评论。 在考虑使用 git reset 之前,应该给出一个强烈的警告。 git reset 是一个破坏性命令,它删除目标提交后的更改(运行 git reset [commit hash] 时的提交哈希或 运行 git reset 时的最新提交)。

如果我正确理解了这个问题,git reset 违反了原始问题中的要求,如引用的那样:“我只想返回并选择再次前进”。

git checkout 将是更适合此场景的命令,它允许观察和分支出先前的提交,同时保持所有更改和历史记录不变。

执行完git checkout [older-commit-hash]后,可以通过执行命令git checkout [newer-commit-hash]git checkout [branch-name]

再次前进

为了更好地解释 git checkout/reset/revert 之间的区别,您可以查看(无双关语意)此资源:

https://www.atlassian.com/git/tutorials/resetting-checking-out-and-reverting


如果您无意中执行了 git reset 并且想要恢复您的更改,您可以参考这个 Stack Overflow 线程:

Recover from git reset --hard?

我在 Git 桌面中找到了适合我的解决方案,无需使用命令行。

转到历史记录,right-click 您要返回的提交并单击 “从提交创建分支”

帮助我恢复了在最近一次提交中丢失的一些数据。之后我只是删除了分支并回到了主分支。