我正在使用Sourcetree for Windows获取git-repository,并希望撤消未提交的提交。
这可能吗?如果我“还原提交”,它会创建第二个提交,它会恢复第一次提交,但我不希望第一次提交在我的源代码控制中出现。
我也可以删除我的本地存储库并在没有本地提交的情况下再次删除它,但也许还有另一种方式?
答案 0 :(得分:308)
软复位将保留您的本地更改。
来源: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
。使用软重置时,将从git中删除提交E
,但将保留本地更改。 git reset documentation中有更多示例。
答案 1 :(得分:38)
如果选择要还原到的日志条目,则可以单击"重置为此提交"。如果您没有推送反向提交更改,请仅使用此选项。如果您担心丢失更改,那么您可以使用软模式,这将留下一组未提交的更改(您刚才更改的内容)。使用混合重置工作副本但保留这些更改,并且很难完全摆脱这些更改。这是一些屏幕截图:
答案 2 :(得分:2)
如果要删除提交,可以将其作为交互式变基的一部分。 但是请谨慎操作,以免最终弄乱您的回购。
在Sourcetree中:
查看此Atlassian blog post,了解有关Sourcetree中的交互式变基的更多信息。
答案 3 :(得分:0)
如果您在另一个分支上,您需要首先“检查此提交”以查找要删除的提交,然后只有“将当前分支重置为此提交”选择以前的wright提交才会生效。