如何将本地修改应用到GitHub项目的新版本?
本地定制分支同步上游新版本的Git工作流
前置准备
先确保你已经关联了上游仓库的远程地址(没加的话先执行):
git remote add upstream <上游仓库的Git地址>
拉取上游最新版本的代码:
git fetch upstream
方案一:Cherry-pick(适合少量本地提交)
如果你的定制修改只有寥寥几个提交(比如你提到的2个),用这个方法最直接:
- 基于上游最新版本(比如5.5)新建一个本地分支,用来承载定制内容:
git checkout -b local-custom-5.5 upstream/5.5 - 查看
local-changes分支里你的定制提交哈希:
记下那两个提交的哈希值,比如git log local-changesabc123和def456。 - 把这两个提交“复制”到新分支上:
因为你说修改的部分在新版本没变动,基本不会有冲突,直接完成就行。万一碰到冲突,解决后执行git cherry-pick abc123 def456git cherry-pick --continue收尾。 - 搞定后,
local-custom-5.5就是带上游5.5+你的定制的分支了。
方案二:Rebase(适合长期维护定制分支)
如果之后上游还会持续更新,你想长期维护自己的定制分支,推荐用变基:
- 切换到你的
local-changes分支:git checkout local-changes - 把你的定制提交重新“嫁接”到上游5.5版本上:
Git会自动逐个把你的定制提交应用到上游最新代码上。同样,没冲突的话直接完成;有冲突就手动解决,然后执行git rebase upstream/5.5git rebase --continue。 - 完成后,
local-changes就完全基于上游5.5版本,同时保留了所有定制修改。
后续操作
以后上游出了新版本,重复上面对应的步骤就能同步你的定制内容。要是哪天上游改了你定制的代码部分,冲突肯定得手动解决,这部分确实没捷径可走。
内容的提问来源于stack exchange,提问作者TomS
相关产品推荐
相关产品推荐

