Git含孤儿/非孤儿分支工作流:开发并同步至内部仓库可行吗?
可行方案说明
你的需求完全可以实现,以下是具体操作流程:
一、日常开发与远程仓库origin的交互
在本地的孤儿分支(假设名为public-dev)上正常开发即可,和普通分支的推拉操作完全一致:
- 提交本地修改后推送到GitHub:
git push origin public-dev - 拉取远程
origin的最新代码:git pull origin public-dev
二、定期同步到内部仓库internal
由于public-dev是孤儿分支,和internal仓库的历史无共同祖先,需要通过提交移植的方式同步,避免暴露专有历史,具体步骤如下:
- 确保本地已关联
internal远程仓库(未关联则执行):git remote add internal <内部仓库地址> - 拉取
internal仓库的最新代码:git fetch internal - 选择同步目标(二选一):
选项1:同步到
internal的现有分支(如main)
切换到internal/main分支:git checkout internal/main将
public-dev上的新提交逐个移植过来(替换<起始提交哈希>和<最新提交哈希>为实际值,若要同步所有提交,可省略起始哈希):git cherry-pick <起始提交哈希>..<最新提交哈希>若遇到冲突,解决冲突后执行
git cherry-pick --continue继续,完成后推送到internal:git push internal main选项2:在
internal上创建独立同步分支
基于internal/main创建专门的同步分支(如public-sync):git checkout -b public-sync internal/main移植
public-dev的提交:git cherry-pick <起始提交哈希>..<最新提交哈希>解决冲突后推送到
internal:git push internal public-sync
注意事项
- 禁止将
internal仓库中的专有分支合并到public-dev,否则会将受限历史同步到origin,破坏孤儿分支的独立性。 - 团队需约定同步频率(如每周一次),避免多人同时同步引发冲突,若冲突不可避免,优先以
public-dev的提交内容为准。
内容的提问来源于stack exchange,提问作者mankoff
相关产品推荐
相关产品推荐

