前段时间我开始使用git svn。现在我在分支A中实现了一些功能。我想合并到分支B.分支A和B的结构如下:(注意,这不是项目意义上的子模块)。
A
/module0
/module1
.
.
.
/module15
B
/module0
/module1
/module2
/module3
分支B是从subversion分支创建的新分支。
git checkout remote/... -b B
svn远程分支和svn trunk(A)中的模块0-3已在几年前拆分并手动修补(没有svn合并信息),因此有很多变化。
我的目标是将模块0中的一些更改从A合并到B.最好通过git merge,以便稍后将更容易合并未来的更改。我已经发现合并单个目录不起作用,所以这就是我所做的:
git checkout B
git merge A
导致HUUUUUUUUUUUGE冲突和分支B中的额外12个模块。
我不确定如何正确地从这里开始。
我git rm -rf moduleX
所有不必要的模块,并尝试通过
git checkout --ours /moduleX
但是git报告仍会合并这些模块中的冲突以及一些修改过的文件,因为它们只在A中更改,但我不希望这些更改。
另外我已经考虑过樱桃采摘,但这似乎也很痛苦。
答案 0 :(得分:0)
我认为你的方法非常接近。我将git checkout
更改为:
git checkout HEAD -- moduleX
这将检出每个文件的“我们的”版本,包括每个成功自动合并的文件。我认为,使用--ours
只会将“冲突”文件还原到版本B
。 (另外,您可以使用B
或HEAD
,更容易;他们会解析为相同的SHA-1,因为您要合并到分支B
中,以便HEAD
只是B
的另一个名称。)
根据需要经常检查git status
,以确保您只拍摄了所需的部分。