GIT:如何挤压已被推送到远程回购的多个提交?
问题描述:
我有一个奇怪的设置与Git。基本上我有:GIT:如何挤压已被推送到远程回购的多个提交?
[client 1] <---> [remote repo] ----> [client 2]
[客户1]在本质上是当地的回购我一起工作,因为我不能编译/建立我的本地机器上的项目。
[客户端2]是用于建筑物的远程服务器。
在中间,我有另一个回购,[远程回购],主要用于与我公司的CVS中央回购同步,并同步我的[客户1]和[客户2]。
由于所有的编译/建筑上完成[客户端2],我有[客户1]许多琐碎提交只是为了固定编译或建筑物的错误。
所以的时候我发现有在过去犯下的错误,这是为时已晚,因为提交已经被推到并从远程回购拉动。
我如何能够压制这些(多)琐碎提交成一个? 谢谢。
答
首先,避免挤压和一般重写历史,除非你绝对必须的。 “微不足道”的提交并不是压制提交提交的理由。如果他们能留下来,让他们留下来。重写历史在CVS中根本不是直接的,因为这些提交可能会进入CVS回购,你应该可以忍受它。
对于git远程回购,如果你确实希望继续 - 我假设你知道压缩你当地回购的提交(git rebase -i
很简单)。在壁球之后,推动一个-f
- 推力。
答
您可以git rebase -i
或git merge --squash
壁球提交,请参阅Squash my last X commits together using Git
但既然你已经其发布到另一个仓库,你必须将其固定到别人。相当麻烦,但git push --force
是你需要的命令,但。
不推荐,但是:如果远程回购已经与CVS同步你必须修复它太...同样的事情,如果其他开发者已经从它拉出。
感谢您的回答。对不起,我接受manojlds的答案仅仅是因为他早一点,因为两个答案都非常相似 – wei