我目前正在使用svn进行项目(服务器版本为1.4,这意味着没有可用的现代合并工具).
我想合并一个分支,并在其中进行了数周的工作.问题是,在创建分支时,它仅作为子文件夹的副本.
Svn项目结构:
/trunk/folder1
/file1
/file2
folder2
folder3
...
Run Code Online (Sandbox Code Playgroud)
现在我正在努力将一个分支合并回主干.
现在的问题是,创建分支的人只复制/ trunk/folder1而不是整个主干.这给git-svn带来了问题,因为它认为我在文件夹中创建了一堆文件.
git co master
git merge branch1
...
create mode 100644 trunk/file1
create mode 100644 trunk/file2
Run Code Online (Sandbox Code Playgroud)
(假设文件最初在/trunk/folder1/file1)
原因是我没有使用svn,因为太多的conflickts.(svn merge需要服务器1.5+和我们只有1.4,svnmerge.py只能同时合并小块,并要求精神负担过的很多...我用半天时间打通只有一半)
使用git merge似乎很有希望,但首先我需要告诉git使用我的主分支的子文件夹作为合并目标.怎么做的?
将subtree合并策略用于该用途的情况下创建的.它在远程分支中查找与本地分支中的子目录中的文件匹配的文件,如果它确实找到它们,则在调用"正常" recursive合并策略之前,它会重写所有路径以使两个目录结构匹配.
所以,试试吧
git merge -s subtree branch1
Run Code Online (Sandbox Code Playgroud)