什么是最好的git工作流来保持一个forked项目与上游项目的更新?

问题描述 投票:0回答:1

我正在维护另一个自由软件项目的forked版本,它提供了一些额外的功能,目前无法与上游项目合并。它提供了一些额外的功能,但目前还不能与上游项目合并。我想让这个分叉的项目与上游项目的最新更新保持一致。

我是这样做的。

  • 建立另一个分支,比如 "my -custom -version
  • 我保持本地 master,与上游同步 master
  • 我用的是 git rebase 在上游项目的每一个新版本中,用master重设我的自定义分支的基数
  • 由于我的分支和主分支之间有一些冲突(比如版本和描述中的 package.json 文件,我得到合并冲突。我解决了冲突并使用 git rebase --continue.

在这里,我认为我的历史记录会被破坏,因为合并发生替换或修改到最后一次提交。这让我担心我的方法是否正确。

我是否应该将我的自定义分支(就像自定义分叉的主干)与主干一起重垒?如果是,我应该如何重基才能保证历史安全。如果不是,什么是正确的方法?

git version-control rebase git-merge-conflict
1个回答
1
投票

根据定义,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)
© www.soinside.com 2019 - 2024. All rights reserved.