Sourcetree - 撤消未提交的提交

时间:2014-05-26 07:56:14

标签: atlassian-sourcetree datasourcecontrol

我正在使用Sourcetree for Windows获取git-repository,并希望撤消未提交的提交。

这可能吗?如果我“还原提交”,它会创建第二个提交,它会恢复第一次提交,但我不希望第一次提交在我的源代码控制中出现。

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

4 个答案:

答案 0 :(得分:308)

  1. 右键单击要重置的提交(不是您要删除的提交!)
  2. 选择"将master重置为此提交"
  3. 选择" Soft"复位。
  4. 软复位将保留您的本地更改。

    来源: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 。使用软重置时,将从git中删除提交E,但将保留本地更改。 git reset documentation中有更多示例。

答案 1 :(得分:38)

如果选择要还原到的日志条目,则可以单击"重置为此提交"。如果您没有推送反向提交更改,请仅使用此选项。如果您担心丢失更改,那么您可以使用软模式,这将留下一组未提交的更改(您刚才更改的内容)。使用混合重置工作副本但保留这些更改,并且很难完全摆脱这些更改。这是一些屏幕截图:

enter image description here

答案 2 :(得分:2)

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

在Sourcetree中:

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

查看此Atlassian blog post,了解有关Sourcetree中的交互式变基的更多信息。

答案 3 :(得分:0)

如果您在另一个分支上,您需要首先“检查此提交”以查找要删除的提交,然后只有“将当前分支重置为此提交”选择以前的wright提交才会生效。