繁体   English   中英

git rebase-我挤压没有删除提交

[英]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

并且想要提交一次提交,而不是e9199bac4e3b53 我做了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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM