繁体   English   中英

git从master的subtree文件夹合并到分支根目录

[英]git merge from subtree folder in master to branch root

其实我的问题是:
有没有一种方法可以从文件夹合并到分支的根目录?

我想要的是:

  1. 分支分支中的文件夹的读取树
  2. 分支下进行一些更改(在子树文件夹中添加文件)
  3. 将这些更改(添加的文件)从目录中的子树文件夹合并到分支根目录

我已经尝试过本教程: 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

我期望的是:

  • 机架文件夹中master分支中的新文件'fileInRack'
  • rack_branch根目录中的新文件'fileInRack'

但是在合并git的子树之后,请注意:

删除机架/ fileInRack
壁球提交-不更新HEAD
自动合并进展顺利; 在按要求提交之前已停止

但是我需要添加,而不是删除。

那么,我在做什么错呢?
还有其他从文件夹合并到分支根的方法吗?

代替

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"

编辑:我偶然发现这篇文章的原因是我有一个类似的问题,并且上面的解决方案不起作用( 请参阅此处 )。 注意有关--no-ff选项的编辑。 始终使用此选项可能是一个好主意?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM