我有一个带有远程 foo 的 git 存储库。
foo 是一个网络应用程序,它直接在其根目录中包含一些文件和目录:
Rakefile
app
...
public
script
我的主要 git 存储库是一个更大的系统,其中包含这个 Web 应用程序。我想从 foo 中提取提交,但我需要将文件驻留在web
目录中。所以它们应该变成web/app
,web/public
等等。
我不想使用 foo 作为子模块。我想将 foo 合并到主存储库中,然后摆脱它。
我有一个带有远程 foo 的 git 存储库。
foo 是一个网络应用程序,它直接在其根目录中包含一些文件和目录:
Rakefile
app
...
public
script
我的主要 git 存储库是一个更大的系统,其中包含这个 Web 应用程序。我想从 foo 中提取提交,但我需要将文件驻留在web
目录中。所以它们应该变成web/app
,web/public
等等。
我不想使用 foo 作为子模块。我想将 foo 合并到主存储库中,然后摆脱它。
子树合并的最新资源有:
引用如何使用子树合并策略:
在此示例中,假设您的存储库位于
/path/to/B
(但如果您愿意,它也可以是 URL)。您希望将该存储库的主分支合并到dir-B
当前分支中的子目录。这是您需要的命令序列:
$ git remote add -f Bproject /path/to/B
$ git merge -s ours --no-commit Bproject/master
$ git read-tree --prefix=dir-B/ -u Bproject/master
$ git commit -m "Merge B project as our subdirectory"
$ git pull -s subtree Bproject master
另见文章“子树合并和你”的评论。
如果您愿意接受它作为答案,这里是您的答案的社区 wiki 版本。
这回答了我的问题:
http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html