2017-05-02 66 views
0

这很可能以前被问过,但我已经弄得我自己很困惑,试图找到解决方案,我认为只需发布具体问题我很好试图解决。Git - 从本地和远程回购中删除多个以前的提交

我想彻底删除已删除的提交(请参阅屏幕抓取),其他用户不改动。正如你所看到的,这些提交并不总是遵循对方。我已经将所有这些提交都推送到远程,所以我需要这个来反映那里。是否有可能做到这一点?

我对使用Git比较陌生,所以任何建议都会很棒。谢谢。

Local repo commits - SourceTree screen grab

回答

1

如果您已经被推这些提交,你不应该从历史中删除。这样做会导致其他人遇到问题时,他们拉你的变化。

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

要删除最近提交了在图像划掉,输入以下命令:

git revert 1e3e620 

重复此任何其他承诺要恢复,然后按所有提交到远程存储库。

+0

没有人从远程拉动,所以现在使用rebase会是更好的选择吗? – Aethyrion

+0

进行重新绑定会导致更清晰的历史记录 - 您不会看到原始提交或还原提交。在重新绑定后推送到远程存储库时,您将需要包含'--force'参数。 – Andy

+0

考虑到没有其他人从回购协议中拉出来,我现在就要进行重新配售。但要记住你的解决方案。感谢您的帮助:) – Aethyrion

0

使用git rebase -i删除提交,然后用--force推送到远程。 (处理那些已经从遥远的地方拉下来的同事...)

+0

我知道一个事实,即没有人从遥远的地方撤离。那么这种方法是最好的选择? – Aethyrion

相关问题