Git - 从本地和远程仓库中删除多个先前的提交

时间:2017-05-02 14:30:38

标签: git github bitbucket atlassian-sourcetree

之前很可能已经提出这个问题,但是我试图找到解决方案让我感到很困惑,我认为最好只发布我试图解决的具体问题。

我想彻底删除划掉的提交(请参阅屏幕抓取),保持其他人不受影响。正如您所看到的,这些提交并不总是相互关注。我已经将所有这些提交推送到远程,所以我也需要这样来反映它。有可能这样做吗?

我使用Git相对较新,所以任何建议都会很棒。感谢。

Local repo commits - SourceTree screen grab

2 个答案:

答案 0 :(得分:1)

如果您已经推送了这些提交,则不应将其从历史记录中删除。这样做会在他们撤消更改时导致其他人出现问题。

相反,您可以使用revert命令创建新提交,并从先前的提交中删除更改。当您将此提交推送到远程存储库时,它将与删除提交具有相同的效果,但当其他人从该存储库中拉出时,它不会导致问题。

要删除图像中划掉的最新提交,请输入以下命令:

git revert 1e3e620

对要还原的任何其他提交重复此操作,然后将所有这些提交推送到远程存储库。

答案 1 :(得分:0)

使用git rebase -i删除提交,然后使用--force推送到远程。 (并处理已经从遥控器中拉出来的不安同事......)