【发布时间】:2019-09-19 08:18:08
【问题描述】:
我有一个带有第二个 repo 作为子模块的 git repo。两个 repos 都有针对通常直接对应的各种功能的相应分支,例如如果父 repo 在分支 A,子模块也将在分支 A。
在父模块和子模块 repos 中,随着时间的推移会添加更多分支,有时我会将旧分支合并到以后的分支中,例如在两个 repos 中定期将分支 A 合并到分支 B,而分支 B 也会获得不在 A 中的新提交。
当我在 A 子模块更新后将分支 A 合并到 B 的父仓库时,问题就出现了。我想忽略这些更新(即,我总是想在合并期间丢弃子模块更新,否则父分支 B 可能最终得到子模块分支 A,这是错误的)。
我找到了一些instructions 来了解如何在合并文件 时始终使用“我们的”,但它似乎对子模块无效。以下是使用子模块重现问题的方法:
# first command will update your ~/.gitconfig, you may want to undo it later
git config --global merge.ours.driver true
mkdir -p tmp/sub
cd tmp
git init
git commit --allow-empty -m "chore: Initial commit"
echo 'sub merge=ours' >> .gitattributes
git add .gitattributes
git commit -m 'chore: Preserve sub during merges'
mkdir sub
pushd sub
git init
git commit --allow-empty -m "sub: init"
popd
git submodule add ./sub
git commit -m 'add submodule'
git checkout -b demo-prod
pushd sub
echo prod > readme
git add readme
git commit -m 'add prod readme'
popd
git commit sub -m 'sub: add prod readme'
git checkout -
git submodule update
pushd sub
echo master > log
git add log
git commit -m 'add master log'
popd
git commit sub -m 'sub: add master log'
git checkout demo-prod
git merge -
预期结果是自动合并,但实际结果是合并冲突,因为“sub”在父 repo 的两个分支中都有新的提交。
在这种情况下如何实现轻松合并?
【问题讨论】:
标签: git merge git-submodules