使分叉项目与上游项目保持同步的最佳 git 工作流程是什么?

What is best git workflow to keep a forked project uptodate with upstream project?

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

我就是这样做的:

在这里,我认为我的历史被破坏了,因为合并恰好替换或修改了最后一次提交。这让我很担心我的做法对不对。

我应该用 master 重新设置我的自定义分支(就像自定义分支的 master)吗?如果是这样,我应该如何改变以保证历史安全。如果不是,正确的方法是什么?

根据定义,变基重写历史。没有简单的方法可以确保它的安全,而且重写公开可见的历史确实很危险。

我想说最简洁的方法就是定期从 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)