git跟踪“超级项目”中的子模块文件

时间:2012-01-14 15:30:44

标签: git

我有一些大型遗留git存储库,我将其划分为模块。我的问题是当我尝试应用在不使用子模块时创建的补丁超级项目没有子模块文件的跟踪。

这是我的步骤:

$ git clone git@192.168.0.249:super-project
$ cd super-project
$ git clone git@192.168.0.249:my_submodule
$ git submodule add ./my_submodule
$ git submodule init
$ git submodule sync
$ git submodule update
$ git add .gitmodules 
$ git commit -a
$ git am ~/patches/* 

Applying: <PATCH NAME>
error: <PATH TO FILENAME>: does not exist in index
When you have resolved this problem run "git am --resolved".
If you would prefer to skip this patch, instead run "git am --skip".
To restore the original branch and stop patching run "git am --abort".

2 个答案:

答案 0 :(得分:1)

我认为您只需要在子模块中应用补丁。如果以某种单独的补丁文件现在引用多个子模块的方式拆分项目,那么您可能需要编辑补丁文件(如果有很多,可能需要编写脚本)。或者您可以尝试使用patch程序而不是git以“草率”方式应用修补程序文件,并忽略将根据哪个子模块具有哪些目标文件而发生的部分故障。

答案 1 :(得分:1)

看看git-slave来协调超越子模块的工作。

否则,只是

git submodule add url path/you/want
git submodule update --init --recursive
git add -A
git commit -m "added submodule"