我有一个项目,它由几个单独的Git存储库组成(合并几个Maven项目,每个项目都有一个单独的Git存储库)。
现在我想创建一个Git存储库并将每个存储库的内容放入其子目录中,保留它们各自的历史记录(将多个Maven项目合并为一个多模块Maven项目)。
我该怎么做?
我尝试将答案应用于similar SO question:
P1
- PN
和统一存储库U
。U
。P1
(U
)中创建分支git checkout -b P1
。P1
目录中,运行命令git remote add U git@myuser.beanstalkapp.com:/U.git
。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'
答案 0 :(得分:2)
这样做的一种方法是将每个存储库添加为git submodule,但听起来好像您需要一个存储库。
您可以使用名为git-subtree
的脚本创建包含所有其他存储库历史记录的单个存储库,该脚本现在是主线git的一部分,尽管在contrib
目录中。要安装git-subtree
script,请将其保存到git-subtree
上某处的名称PATH
。 (如果有效,那么git subtree
应该会给你一个使用信息。)
假设您使用以下内容创建了一个新的空存储库:
mkdir example
cd example
git init
touch .gitignore
git add .gitignore
git commit -m 'Initial commit'
然后,对于每个其他存储库,您可以执行以下操作(假设存储库位于URL git://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
然后对每个其他存储库执行相同的操作。