Sourcetree-撤消未推送的提交


208

我正在将Sourcetree for Windows用于git存储库,并希望撤消未推送的提交。

那可能吗?如果我执行“还原提交”,它将创建第二个提交以还原第一个提交,但是我根本不希望第一个提交出现在我的源代码管理中。

我也可以删除本地存储库,然后在没有本地提交的情况下再次将其拉出,但是也许还有另一种方法吗?


我写了一篇详细的截图。共享以希望对您有帮助:attosol.com/undo-in-git-using-sourcetree
Rahul Soni,

Answers:


345
  1. 右键单击要重置为的提交(而不是要删除的提交!)
  2. 选择“将主服务器重置为此提交”
  3. 选择“软”重置。

软重置将保留您的本地更改。

资料来源:https : //answers.atlassian.com/questions/153791/how-should-i-remove-push-commit-from-sourcetree

编辑

关于git revert:此命令创建一个新的提交,它将撤消其他提交。例如,如果您有一个添加了新文件git revert的提交,则可以使用该提交来删除新文件。

关于应用软重置:假设您拥有AEA---B---C---D---E)的提交,并且您想删除最后一次提交(E)。然后,您可以进行软重置以提交D。进行软重置后,提交E将从git中删除,但将保留本地更改。git reset文档中还有更多示例。


34
或者,如果您正在分支上-“将当前分支重置为此提交”
Tom Auger

5
我非常不了解这些UI解释...将当前分支重置为该提交,听起来似乎不会删除该提交。它最终完成了您期望得到的更多操作。它将我的工作副本重置为提交,而不是将其删除。
MrFox

我同意@MrFox。完成此操作后,我不想要的提交仍会显示在树中。
Timmmm

@Timmmm:新的解释有帮助吗?
nightlyop'1

实际上,我意识到我已经将提交提交到github。我找到了一篇文章,解释了如何“重写历史记录”,但似乎麻烦多于其价值!
Timmmm '16

46

如果选择了要还原到的日志条目,则可以单击“重置为此提交”。仅当您未推送反向提交更改时才使用此选项。如果您担心丢失更改,则可以使用软模式,该模式将保留一组未提交的更改(您所做的更改)。使用混合模式会重置工作副本,但会保留这些更改,而硬硬盘将完全摆脱更改。这是一些屏幕截图:

在此处输入图片说明


3
如果您仍然看到一个图标,显示上次提交中有“推”功能(您刚刚删除了该信息),则pull和Sourcetree似乎可以更新UI。
ChristoKiwi '16

6

如果要删除提交,可以将其作为交互式基础的一部分。但是请谨慎操作,以免最终弄乱您的存储库。

在Sourcetree中:

  1. 右键单击比要删除的提交要早的提交,然后选择“ 以交互方式重新设置xxxx的子级... ”。您单击的那一个将成为您的“基础”,您可以更改在此之后所做的每个提交。
  2. 在新窗口中,选择要删除的提交,然后单击底部的“ 删除 ”按钮,或者右键单击该提交,然后单击“ 删除提交 ”。
  3. 单击“ 确定 ”(如果要中止,则单击“ 取消 ”)。

请查看此Atlassian博客文章,以获取有关Sourcetree中交互式变基的更多信息。


这是我一直在寻找的答案,完全按照需要工作。
克里夫·伯顿

0

如果您在另一个分支上,则需要先对要删除的提交进行“检查此提交”,然后才选择先前的wright提交来“将当前分支重置为此提交”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.