如何将最新更改从基础回购合并到分叉回购

How to merge latest changes from a base repo to a forked repo

2 年前我 fork 了一个 git 仓库。在那之后,我们在我们这边做了一些改变,但我们在许多文件中改变了一些小东西。

现在我们从中分叉出来的基础 git 回购中有一些修复+功能。从现在开始,我们希望通过保持本地更改不变,将这些更改包含到我们的分叉版本中。

有没有什么方法可以将最新的回购更改合并到我们的分叉回购中,同时保持我们的本地更改不变?

如果更改被隔离到它们自己的分支上,那么您可以简单地从上游存储库中拉取更改。

git pull

请注意,这相当于一个 git fetch && git merge 操作。

如果您想将这些新更改包含到您的特定分支中,则必须通过 git merge 将它们合并。请记住,如果对超过两年的代码库进行更改,您可能会 运行 陷入合并冲突。届时,您需要弄清楚从旧版 API 到新版 API 发生了什么变化,并确定前进的最佳方式。

除了 Makoto 的回答描述了如何 git merge 从基本回购分支到你的分叉分支的变化,你也可以考虑做一个 git rebase。考虑下图:

base branch: A <- B <- C
your branch: A <- D <- E <- F

如果你 git rebase 你的分支在基础分支上,那么你的分支最终会看起来像这样:

your branch: A <- B <- C <- D' <- E' <- F'

rebase 允许您从基本分支中提取所有更改,同时基本上保持您在分支上的相同提交完整无缺,并且按照您在过去两年中所做的相同顺序年。我不知道这是否是您说 "keeping our local changes as it is" 时想到的,但这可能符合要求。

你也可能会在这里遇到合并冲突,就像你进行合并一样,所以准备好享受一些乏味的乐趣吧。