其实我的问题是:
有没有办法从主中的文件夹合并到分支中的root?
我想要的是:
我试过这个教程:https://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging
但结果出人意料:
我做了:
$ git init
$ touch fileInMaster
$ git add -A
$ git commit --all -m 'initial commit'
$ git checkout master
$ git remote add rack_remote https://github.com/schacon/rack.git
$ git fetch rack_remote
$ git checkout -b rack_branch rack_remote/master
$ git checkout master
$ git read-tree --prefix=rack/ -u rack_branch
$ git add -A
$ git commit --all -m 'After read-tree to rack folder'
$ echo 0 > rack/fileInRack
$ git add -A
$ git commit --all -m 'Add fileInRack file to rack folder'
$ git merge --squash -s subtree --no-commit rack_branch
我期待的是:
但是在子树合并git后请注意我:
删除rack / fileInRack
壁球提交 - 不更新HEAD
自动合并进展顺利;在按要求提交之前停止
但我需要添加,而不是删除。
那么,我做错了什么? 是否有其他方法可以将主中的文件夹合并到分支中的根目录?
答案 0 :(得分:0)
而不是
git merge --squash -s subtree --no-commit rack_branch
你可以做到
git checkout rack_branch
git merge --squash -s recursive -Xsubtree --allow-unrelated-histories master
git commit -m "commit fileInRack to rack_branch"
编辑:我偶然发现这篇文章的原因是我遇到了类似的问题,而我上面的解决方案无效(see here)。请注意有关--no-ff
选项的修改。总是使用这个选项可能是一个好主意吗?