回到Github Desktop中的先前提交

mor*_*huz 33 git github github-desktop

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

我可以看到可以恢复提交,但这并不是我想要的,因为它创建了一个新的提交.我只想回过头再次选择,就像我可以跳到另一个分支一样.

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

Sev*_*ven 43

一般情况下,您可以返回历史记录中的提交git reset.


使用GitHub Desktop无法做到这一点.GitHub Desktop更像是一个同步存储库的工具,而不是一个功能齐全的GUI客户端.
但这并不意味着你必须使用命令行,因为有其他选择.你可以在这里找到一个清单.提一些(支持git reset):


以下是在命令行中执行此操作的方法.大多数客户端使用相同的词汇表在其UI中提供此功能(通常,您可以通过上下文菜单选择提交并重置它).

你将回到之前的提交

git reset HEAD^
Run Code Online (Sandbox Code Playgroud)

或者更多提交(例如3)

git reset HEAD^3
Run Code Online (Sandbox Code Playgroud)

或者由特定的提交

git reset f7823ab
Run Code Online (Sandbox Code Playgroud)

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

要获得要"恢复"的提交的原始状态,您必须通过--hard.例如:

git reset f7823ab --hard
Run Code Online (Sandbox Code Playgroud)

  • 如果您只是想检查较早的状态,但最终想要返回到最近的提交节点,请使用“git checkout”而不是“git reset”。请参阅/sf/answers/287988571/ (6认同)
  • 好的,谢谢,这绝对有用,但我希望能够在 GitHub Desktop 中执行此操作,即使用 GUI (2认同)

小智 12

这是关于@SevenEleven 答案的评论。在考虑使用之前应给予强烈警告git resetgit 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?


小智 7

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

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

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


Amy*_*y B 6

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

提交按钮下方的撤消按钮