我有一个例子,那就是我工作的图书馆的历史和我的作品的历史有分歧。在我从包含库1.0的原始分支中分离出来之后,库的开发人员发布了一个更新,我需要将它合并到最终结果中,保持在此基础上所做的更改。
对于类似的问题,here已经有了一个答案。然而,许多有经验的Git用户不建议重新设置已经公开的提交,并且有一个很好的理由:历史将被重写。与前一次提交相关的任何内容都将丢失。保留对“记账”的请求将变得毫无用处。所以,如果我想实现类似的结果,但是保持历史上正常的,更重要的是,拥有本地协作者的库一致的,那么最好的方法是什么?
我希望底层库的开发人员会偶尔发布新的版本,这个过程每次都需要重复,有所有的缺点。这张图应该是这样的:
product ------P1--P2--P3--P4'--P5--P6'
/ / /
library ---L1----------L2-------L3有没有人?
发布于 2015-07-07 22:13:59
使用git merge而不是git rebase。这将创建一个“合并提交”,而不是重写历史。
例如:
git fetch
git merge library/master发布于 2015-07-07 23:33:16
我找到的答案是使用重基,然后合并。重基是在临时分支上完成的。
product P1--P2--P3------P4--P5--P6--P7------P8---
/ | / | /
integration / P3--P3' P7--P7'
/ / /
library ---L1------------L2------------------L3---实现这一点的方式如下:
$ git checkout library
$ git fetch --no-tags library master
$ git merge library/master
$ git checkout -b integration
$ git rebase library
$ git checkout product
$ git merge --squash integration
$ git branch -D integratonhttps://stackoverflow.com/questions/31280202
复制相似问题