6

我有一个带有远程 foo 的 git 存储库。

foo 是一个网络应用程序,它直接在其根目录中包含一些文件和目录:

Rakefile
app
...
public
script

我的主要 git 存储库是一个更大的系统,其中包含这个 Web 应用程序。我想从 foo 中提取提交,但我需要将文件驻留在web目录中。所以它们应该变成web/app,web/public等等。

我不想使用 foo 作为子模块。我想将 foo 合并到主存储库中,然后摆脱它。

4

3 回答 3

4

这回答了我的问题:

http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html

于 2008-11-05T19:42:45.983 回答
2

子树合并的最新资源有:

引用如何使用子树合并策略

在此示例中,假设您的存储库位于/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

另见文章“子树合并和你”的评论。

于 2012-09-03T07:32:29.927 回答
1

如果您愿意接受它作为答案,这里是您的答案的社区 wiki 版本。


这回答了我的问题:

http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html

于 2008-11-06T03:41:12.663 回答