[英]Git rebase - i squashing didn't remove commit
我在原产地主管的头后面有一个本地提交,并且想要合并最后两个提交。 因此,假设历史如下:
* e9199ba - (HEAD -> master)
| test
* c4e3b53 - (origin/master, origin/HEAD)
| Saturn ring angle change in X and Y
并且想要提交一次提交,而不是e9199ba
和c4e3b53
。 我做了git git rebase -i HEAD~2
并压缩了第二个提交:
pick c4e3b53 Saturn ring angle change in X and Y
squash e9199ba test
结果,我得到了两个独立的提交-新的提交和旧的提交:
* 216b314 - (HEAD -> master)
| Suqashed commits
| * c4e3b53 - (origin/master, origin/HEAD)
|/ Saturn ring angle change in X and Y
怎么了 是因为原产地负责人的头吗? 在这种情况下如何合并它们? 也许有一些历史显示问题?
就像你说的:
...我有两个独立的提交-新压缩的一个和老主人的一个
这是您应该期望的,因为git rebase
通过复制提交(也许在此过程中进行了一些修改,例如压榨)来工作,然后让Git将您自己的分支名称指向新副本。
但是origin/master
不是您自己的,基于基础的分支。 这是您的远程跟踪分支,它会记住其他一些Git在该其他 Git的master
。 因此,您的origin/master
继续记住其他Git所具有的功能,这是在您进行稍微修改的副本之前的原始提交。
另一个Git存储库本身(您称为origin
具有另一个提交。 由于具有origin
,因此从origin
复制的任何人也都具有origin
。 您必须说服origin
以及所有从origin
复制过来的origin
,才能切换到新的提交。
如果你有控制权origin
,可以很可能使用“力推”覆盖不管它现在已经在其master
与你闪亮的新的提交。 ( origin
存储库也仍然具有旧的提交,尽管可能很短暂,直到它进行“垃圾收集”通过为止。)然后,您还必须说服所有 origin
用户进行切换,就像您所做的一样,就像您被强制执行一样origin
做。 确切的方式和方式取决于您。
请注意,如果其他人也在推动origin
,那么您的强制推送可能会抹去他们添加的依赖c4e3b53
。 您应该在推力之前与其他人进行协调。 (如果没有这样的其他人,则使协调更加容易。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.