Sourcetree - 撤消未推送的提交

问题描述 投票:0回答:5

我正在使用 Sourcetree for Windows 作为 git 存储库,并且想要撤消未推送的提交。

这可能吗?如果我执行“恢复提交”,它会创建第二个提交来恢复第一个提交,但我不希望第一个提交出现在我的源代码管理中。

我也可以删除我的本地存储库并在没有本地提交的情况下再次拉取它,但也许还有另一种方法?

version-control atlassian-sourcetree
5个回答
433
投票
  1. 右键单击您想要重置的提交(而不是您想要删除的提交!)
  2. 选择“将 master 重置到此提交”
  3. 选择“软”重置。

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

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

编辑

关于

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

关于应用软重置:假设您有提交

A
E
(
A---B---C---D---E
) 并且您想删除最后一个提交 (
E
)。然后您可以进行软重置以提交
D
。通过软重置,提交
E
将从 git 中删除,但本地更改将保留。 git重置文档中有更多示例。


58
投票

如果您选择要恢复到的日志条目,则可以单击“重置到此提交”。仅当您未推送反向提交更改时才使用此选项。如果您担心丢失更改,那么您可以使用软模式,这将留下一组未提交的更改(您刚刚更改的内容)。使用混合会重置工作副本但保留这些更改,而硬将完全删除更改。这是一些截图:


11
投票

如果您想删除提交,您可以将其作为交互式变基的一部分来执行。 但请谨慎行事,以免最终弄乱您的存储库。

在源树中:

  1. 右键单击比您要删除的提交更早的提交,然后选择“以交互方式重新设置 xxxx 的子级...”。您单击的将成为您的“基础”,您可以对该提交之后的每一项提交进行更改。

  1. 在新窗口中,选择您想要删除的提交,然后按底部的“删除”按钮,或者右键单击该提交并单击“删除提交”。
  2. 列出项目
  3. 单击“确定”(如果要中止,则单击“取消”)。

查看这篇 Atlassian 博客文章,了解有关 Sourcetree 中交互式变基的更多信息。


0
投票

如果您在另一个分支上,您需要首先“检查此提交”以查找要删除的提交,然后“将当前分支重置到此提交”选择先前的提交,才可以工作。


0
投票

只需使用 GitHub 桌面而不是源代码树。源代码树对用户来说不太友好。在 GitHub 中,您可以选择在添加提交框附近撤消提交,这对用户非常友好,并且可以轻松撤消上次提交,而无需在源代码树中选择所有这些选项。

© www.soinside.com 2019 - 2024. All rights reserved.