我想使用GitHub Desktop(即GUI应用程序-而不是命令行)返回到先前提交的版本(在同一分支上)。这应该是核心功能之一,因为这是使用源代码控制的主要原因。
我可以看到撤消提交是可能的,但这不是我想要的,因为它会创建新的提交。我只想简单地返回并有选择地再次前进,就像我可以轻松跳到另一个分支一样。
这是否可能,还是这是GitHub Desktop的限制,我需要使用命令行实现?
我想使用GitHub Desktop(即GUI应用程序-而不是命令行)返回到先前提交的版本(在同一分支上)。这应该是核心功能之一,因为这是使用源代码控制的主要原因。
我可以看到撤消提交是可能的,但这不是我想要的,因为它会创建新的提交。我只想简单地返回并有选择地再次前进,就像我可以轻松跳到另一个分支一样。
这是否可能,还是这是GitHub Desktop的限制,我需要使用命令行实现?
一般而言,您可以使用 git reset
命令返回到您的提交历史中的某个提交。
但是 GitHub Desktop 无法实现这一功能。GitHub Desktop 更像是一个同步存储库的工具,而非功能齐全的 GUI 客户端。
但这并不意味着您必须使用命令行,因为有其他选择。您可以在 此处 找到支持 git reset
的几个客户端列表:
以下是在命令行中执行此操作的方法。大多数客户端都会在其 UI 中使用相同的词汇(通常,您可以通过上下文菜单选择提交并 "重置到它")。
您可以使用以下命令回到先前的提交:
git reset HEAD^
或者通过一些更多的提交(例如3个)
git reset HEAD^3
或特定提交版本
git reset f7823ab
请注意,Git reset默认会传递选项--mixed
。所以,自重置到那个提交以来所做的所有更改仍将存在。
要获取您想要'还原'的提交的原始状态,您必须传递--hard
选项。例如:
git reset f7823ab --hard
git
命令问题,而不是简单地说“GitHub桌面版无法实现这个功能” :) - rinogogit 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 reset
并想恢复更改,则可以参考此Stack Overflow线程:
Recover from git reset --hard?
我在Git桌面版中找到了一个解决方案,可以不用使用命令行。
进入历史记录,右键单击要回退到的提交,然后单击"从提交创建分支"
这帮助我恢复了我在较近提交中丢失的一些数据。之后我只是删除了该分支并回到了主分支。
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的文档。
Ramon是对的。从右键菜单中,使用[从提交创建分支]。 创建分支但不要推送它。 完成后,删除该分支。快速简便。
使用GitHub桌面版的命令行可能意味着您在某个地方做错了。保持简单。(我们简化了我们的流程,不再需要命令行)。让Git变得简单易用。
2020年的桌面问题10068已经解决:"直接从历史选项卡中检出提交的能力"
已在GitHub桌面3.2.8版本中解决并发布。
请参阅"GitHub桌面社区新增“检出提交”和“双击打开外部编辑器”"
检出提交
非常感谢@kitswas在历史选项卡中添加检出提交功能,这是一个备受期待的功能。