git:我可以只 merge 存储库的子路径吗?

标签 git merge version-control subtree

我有 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/

相关文章:

git - 在没有远程的情况下创建 git 子模块

c++ - Visual Studio 2010 的全局源代码控制忽略模式中应包含哪些内容?

git - 我可以为 "merge"等定义一个 "git merge"别名吗?

git - 如何使 git repo 的子文件夹与另一个 git repo 的子文件夹保持同步

git - 分支显示显示 (master-> origin) 而不仅仅是 (master)

git - 如何使用 PowerShell 删除 Git 中所有 merge 的本地分支

r - 在预先排序的列上合并 R 中的数据框?

python - Pandas :数据框不会合并

svn - 合并 Subversion 分支时保留历史记录

version-control - Windows 上的 RCS 是否有责任/注释?