回到之前在 Github 桌面中的提交

我正在尝试使用 GitHub Desktop (即 GUI 应用程序-NOT 命令行)返回到之前的提交(在同一个分支上)。我认为这是一个核心特性,因为它是最初使用源代码控制的主要原因。

我可以看到恢复提交是可能的,但这不是我真正想要的,因为它创建了一个新的提交。我只是想回到过去,选择继续前进,就像我可以跳到另一个分支一样。

这可能吗? 或者这是 github 桌面的一个限制,我需要使用 cmd 行来做到这一点?

121790 次浏览

通常,您可以使用 git reset返回到历史记录中的提交。


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


下面是在命令行上执行此操作的方法。大多数客户机在其 UI 中使用相同的词汇表提供这一功能(通常,您可以通过上下文菜单选择提交和 重新设定)。

您将返回到之前的提交

git reset HEAD^

或更多的提交(例如3)

git reset HEAD^3

或特定的提交

git reset f7823ab

请记住,默认情况下,选项 --mixed被传递给 git reset。因此,自从您重置到的提交之后所做的所有更改都将仍然存在。

为了得到你想要“恢复”的提交的原始状态,你必须传递 --hard。例如:

git reset f7823ab --hard

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

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的文档

如果您有一个尚未推送的提交,则很容易撤消该提交。当您有这样的提交时,将出现“撤消”按钮。它从分支的历史记录中删除提交,并将文件放回 Changes 区域。

Undo button below commit button

这是一条关于@SevenNovember 的回复的评论。 在考虑使用 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/return 之间的区别,你可以签出(不是双关语)这个资源:

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


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

从基特复位中恢复,很难吗?

我在 Git Desktop 中找到了一个适合我的解决方案,不需要使用命令行。

转到历史记录,右键单击要返回的提交,然后单击 “通过提交创建分支”

帮我恢复了一些在最近一次犯罪中丢失的数据。我只是删除了分支后,回到了主要的分支。

雷蒙是正确的。从右键单击菜单,使用[从提交创建分支]。 创建分支,但不要推它。 完成后,删除分支。快速简单。

在 GitHub Desktop 中使用命令行可能意味着您在某个地方做错了。简单点。(我们简化了流程,不再需要命令行)。让每个人都轻松。