72

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

我可以看到可以恢复提交,但这并不是我真正想要的,因为它会创建一个新的提交。我只是想回去选择再次前进,就像我可以跳到不同的分支一样。

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

4

4 回答 4

67

通常,您可以使用git reset.


这对于 GitHub Desktop 是不可能的。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
于 2016-01-14T13:35:38.333 回答
9

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

提交按钮下方的撤消按钮

于 2019-09-26T20:17:39.907 回答
3

这是关于@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


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

从 git reset --hard 中恢复?

于 2021-11-08T16:25:38.480 回答
2

(编辑: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的文档

于 2018-06-29T14:27:12.953 回答