我有 Remote Foo 和 Bar。 Foo 是一个包含许多目录的 Web 应用程序,其中相关的是 /public
,其中包含各种文件和其他目录。
Bar是前端用到的一组库之类的东西,所以应该放到Foo的/public/bar
里。 Foo 那里没有文件。
无论是子模块还是子树 merge ,这都是小菜一碟。然而……
Bar 的树很乱,它有各种各样的预制作文件,如 PSD 和 FLA,它唯一真正有用的部分是 /www/tools
中的内容。
所以,我想做的是将 Bar 的 /www/tools
merge 到 Foo 的 /public/bar
中,并假装 Bar 树的其余部分根本不存在.
可以吗?
(我想这与您从最初将您的项目 merge 为子树的项目 merge 的方式非常相似。我也不知道该怎么做。)
最佳答案
我已经使用以下命令(针对您的场景重写)成功地完成了此操作。
$ git remote add Bar /path/to/bar
$ git merge -s ours --no-commit Bar/master
$ git read-tree --prefix=public/bar -u Bar/master:www/tools/
巨大的警告!我仍在弄清楚如何从 Bar 中获取/merge 。这将只引入一次所有内容。
我目前 merge 更改的方式是这样的:
$ get fetch Bar
$ git pull -X subtree=public/bar Bar master
这会给您留下冲突,说大量文件已被删除,您可以只git rm
它们,然后 git commit
。
我当然乐于接受关于 pull 更改的更好方法的建议。
由于这是一个旧线程,我应该补充一点,我正在运行 Git 1.7.9。
关于git:我可以只 merge 存储库的子路径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1174360/