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

Git:如何将旧仓库WIP代码安全合并到主仓库子目录?

无需保留提交历史,将独立仓库子目录合并到主仓库指定路径的自动化方案

场景说明

团队维护的主仓库BigRepo已迁移并修改了foo插件,但旧仓库foo_workInProgress中仍有开发中的WIP功能需要合并到BigRepo/src/plugins/foo/src。由于历史无需保留,需要一种自动化方案替代手动git diff处理。

具体步骤

1. 在主仓库添加旧仓库为临时远程

进入主仓库目录,将旧仓库作为远程仓库添加并拉取内容:

cd /path/to/BigRepo
git remote add -f foo_wip /path/to/foo_workInProgress

2. 导入旧仓库子目录到主仓库目标路径

使用git read-tree命令将旧仓库的src目录内容直接导入到主仓库的指定子目录,自动同步无冲突文件:

git read-tree --prefix=src/plugins/foo/src/ -u foo_wip/master:src
  • --prefix:指定主仓库中接收内容的目标路径(末尾的斜杠确保路径层级正确)
  • -u:同时更新工作区和暂存区
  • foo_wip/master:src:指定从旧仓库的master分支下的src目录读取内容(若旧仓库使用其他分支,替换master即可)

3. 解决合并冲突

执行命令后,Git会自动标记冲突文件,按常规方式处理即可:

  • 直接编辑冲突文件,保留需要的代码内容
  • 用git add <冲突文件名>标记冲突已解决
  • 也可使用git mergetool启动可视化工具辅助处理

4. 提交合并结果

冲突解决完成后,提交本次合并的修改:

git commit -m "合并foo_workInProgress中的WIP修改到src/plugins/foo/src"

5. 清理临时远程(可选)

若后续无需再关联旧仓库,可移除临时添加的远程:

git remote remove foo_wip

方案优势

该方案自动化完成无冲突文件的同步,仅需手动处理冲突部分,比手动复制文件后对比diff更高效,且完全不需要保留或迁移提交历史,完美匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:05:10