You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向历史分叉的多个Git远程仓库推送相同变更?

优化向两个分叉历史上游仓库推送共享文件变更的操作

我拥有两个上游仓库ftp05和ftp06,二者Git历史存在分叉,但包含部分共享文件。修改了一个双方共有的文件后,希望将变更推送到这两个远程仓库,当前操作步骤冗余,需优化实现方式。

当前操作步骤:

  • git checkout ftp05/master
  • git checkout -b newbranch
  • 修改文件并提交
  • git push --force-with-lease --set-upstream ftp05 newbranch(创建上游分支)
  • git checkout ftp06/master
  • git checkout -b newbranch-ftp06
  • git cherry-pick <目标提交哈希>
  • git push --force-with-lease --set-upstream ftp06 newbranch-ftp06

优化方案一:简化本地分支操作(单次推送场景)

无需为每个远程创建独立本地分支,用临时分支完成全部操作:

  1. 拉取两个远程仓库的最新master分支:
    git fetch ftp05 master && git fetch ftp06 master
  2. 基于ftp05/master创建临时分支并提交变更:
    • git checkout -b temp-change ftp05/master
    • 修改目标文件后执行:git add . && git commit -m "更新共享文件:[具体描述]"
  3. 推送到ftp05的对应分支:
    git push --set-upstream ftp05 temp-change(若需覆盖远程现有分支,添加--force-with-lease)
  4. 切换到ftp06/master并 cherry-pick 提交:
    • git checkout ftp06/master
    • git cherry-pick temp-change(或直接使用提交哈希git cherry-pick <commit-hash>)
    • 若出现冲突,解决后执行git cherry-pick --continue
  5. 推送到ftp06的对应分支:
    git push --set-upstream ftp06 temp-change(远程仓库独立,分支名可复用)
  6. 可选:清理本地临时分支
    git checkout master && git branch -D temp-change

优化方案二:配置多远程仓库(长期频繁推送场景)

如果需要长期向这两个仓库推送变更,可给本地仓库同时绑定两个远程,简化后续推送流程:

  1. 确认两个远程已添加(未添加则执行):
    • git remote add ftp05 <ftp05仓库URL>
    • git remote add ftp06 <ftp06仓库URL>
  2. 拉取所有远程的最新代码:
    git fetch --all
  3. 基于ftp05/master创建分支并提交变更:
    • git checkout -b shared-update ftp05/master
    • 修改文件并提交:git add . && git commit -m "更新共享文件:[具体描述]"
  4. 推送到ftp05:
    git push ftp05 shared-update
  5. 切换到ftp06/master并 cherry-pick 提交:
    • git checkout ftp06/master
    • git cherry-pick shared-update
    • 冲突解决后执行git cherry-pick --continue
  6. 直接推送当前HEAD到ftp06的目标分支:
    git push ftp06 HEAD:shared-update(无需提前创建本地分支)

内容的提问来源于stack exchange,提问作者glades

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:36:00