如何向历史分叉的多个Git远程仓库推送相同变更?
优化向两个分叉历史上游仓库推送共享文件变更的操作
我拥有两个上游仓库ftp05和ftp06,二者Git历史存在分叉,但包含部分共享文件。修改了一个双方共有的文件后,希望将变更推送到这两个远程仓库,当前操作步骤冗余,需优化实现方式。
当前操作步骤:
git checkout ftp05/mastergit checkout -b newbranch- 修改文件并提交
git push --force-with-lease --set-upstream ftp05 newbranch(创建上游分支)git checkout ftp06/mastergit checkout -b newbranch-ftp06git cherry-pick <目标提交哈希>git push --force-with-lease --set-upstream ftp06 newbranch-ftp06
优化方案一:简化本地分支操作(单次推送场景)
无需为每个远程创建独立本地分支,用临时分支完成全部操作:
- 拉取两个远程仓库的最新master分支:
git fetch ftp05 master && git fetch ftp06 master - 基于
ftp05/master创建临时分支并提交变更:git checkout -b temp-change ftp05/master- 修改目标文件后执行:
git add . && git commit -m "更新共享文件:[具体描述]"
- 推送到
ftp05的对应分支:git push --set-upstream ftp05 temp-change(若需覆盖远程现有分支,添加--force-with-lease) - 切换到
ftp06/master并 cherry-pick 提交:git checkout ftp06/mastergit cherry-pick temp-change(或直接使用提交哈希git cherry-pick <commit-hash>)- 若出现冲突,解决后执行
git cherry-pick --continue
- 推送到
ftp06的对应分支:git push --set-upstream ftp06 temp-change(远程仓库独立,分支名可复用) - 可选:清理本地临时分支
git checkout master && git branch -D temp-change
优化方案二:配置多远程仓库(长期频繁推送场景)
如果需要长期向这两个仓库推送变更,可给本地仓库同时绑定两个远程,简化后续推送流程:
- 确认两个远程已添加(未添加则执行):
git remote add ftp05 <ftp05仓库URL>git remote add ftp06 <ftp06仓库URL>
- 拉取所有远程的最新代码:
git fetch --all - 基于
ftp05/master创建分支并提交变更:git checkout -b shared-update ftp05/master- 修改文件并提交:
git add . && git commit -m "更新共享文件:[具体描述]"
- 推送到
ftp05:git push ftp05 shared-update - 切换到
ftp06/master并 cherry-pick 提交:git checkout ftp06/mastergit cherry-pick shared-update- 冲突解决后执行
git cherry-pick --continue
- 直接推送当前HEAD到
ftp06的目标分支:git push ftp06 HEAD:shared-update(无需提前创建本地分支)
内容的提问来源于stack exchange,提问作者glades
相关产品推荐
相关产品推荐

