3

我有一个项目,它由几个单独的 Git 存储库组成(合并几个 Maven 项目,每个项目都有一个单独的 Git 存储库)。

现在我想创建一个 Git 存储库并将每个存储库的内容放入它的子目录中,保留它们各自的历史记录(将几个 Maven 项目合并到一个多模块 Maven 项目中)。

我怎样才能做到这一点?

我试图将答案应用于类似的 SO 问题

  1. 让我们称之为单独的存储库P1-PN和统一的存储库U
  2. 创建存储库U
  3. P1U( git checkout -b P1)中创建分支。
  4. P1目录中,运行命令git remote add U git@myuser.beanstalkapp.com:/U.git
  5. P1目录中,git push U P1.

当我这样做时,我在最后一步出现以下错误:

error: src refspec ccplogic does not match any.
error: failed to push some refs to 'git@myuser.beanstalkapp.com:/U.git'
4

1 回答 1

2

这样做的一种方法是将每个存储库添加为git submodule,但听起来好像您想要一个存储库。

您可以使用名为 的脚本创建一个包含所有其他存储库历史记录的存储库,该脚本git-subtree现在是主线 git 的一部分,尽管位于contrib目录中。要安装git-subtree脚本,请将其保存到git-subtree您的PATH. (如果这有效,那么git subtree应该给你一个使用信息。)

假设您使用以下内容创建了一个新的空存储库:

mkdir example
cd example
git init
touch .gitignore
git add .gitignore
git commit -m 'Initial commit'

然后对于每个其他存储库,您可以执行以下操作(假设存储库位于 URLgit://wherever/whatever.git并且您希望其master分支出现在子目录中whevs):

git remote add whevs-remote git://wherever/whatever.git
git fetch whevs-remote
git subtree add --prefix=whevs whevs-remote/master

然后对每个其他存储库执行相同的操作。

于 2013-05-01T14:31:26.703 回答