我正在维护另一个自由软件项目的forked版本,它提供了一些额外的功能,目前无法与上游项目合并。它提供了一些额外的功能,但目前还不能与上游项目合并。我想让这个分叉的项目与上游项目的最新更新保持一致。
我是这样做的。
master
,与上游同步 master
git rebase
在上游项目的每一个新版本中,用master重设我的自定义分支的基数package.json
文件,我得到合并冲突。我解决了冲突并使用 git rebase --continue
.在这里,我认为我的历史记录会被破坏,因为合并发生替换或修改到最后一次提交。这让我担心我的方法是否正确。
我是否应该将我的自定义分支(就像自定义分叉的主干)与主干一起重垒?如果是,我应该如何重基才能保证历史安全。如果不是,什么是正确的方法?
根据定义,rebase重写了历史。没有简单的方法来保证安全,事实上,重写公开可见的历史是很危险的。
我想说的是,最干净的方法就是把master分支定期合并到你的分支上。
git checkout custom-branch
git merge master
Git图会是这样的(A--公共基础,B--你自己想保留的改动,A1...A4--master中正在进行的开发,M1、M2--你的合并)。
A -> A1 -> A2 -> A3 -> A4 (master)
| | |
+-> B -----> M1 ------> M2 (custom branch)