我有一个子模块集合和一个交付给我的构建脚本。
该脚本.git
要从每个子模块中删除该子目录。我的子模块集合包括两个应该在公共目录的子目录中创建的子模块:
细化了一些细节,这代表了其中的内容.gitmodules
(以及当前不在以下位置的五个左右其他模块)parent
:
[submodule "parent/expat"]
path = parent/expat
url = /path/to/expat.git
[submodule "parent/build"]
path = parent/build
url = /path/to/External.git
该脚本当前包含以下行以删除.git文件:
git submodule foreach --quiet --recursive rm -rf .git
这得到一个错误:
error: pathspec 'parent/build/' did not match any file(s) known to git.
Did you forget to 'git add'?
该脚本已经可以与其他人的子模块集合一起正常工作,因此将仔细研究我提交的任何修复程序。假设我提出的唯一解决方法将无法涵盖当前命令所涵盖的情况。
如果我--recursive
从foreach
命令中删除该选项,那么在我的情况下,所有不需要的.git
目录都将被删除。
这些之一可能是答案:
我可以捍卫自己的零钱吗?当然,如果我的同事出乎意料地使用嵌套子模块,我可能将无法使用。
我可以做一些等效且简单的操作来删除.git
目录吗?大概以前的作者知道类似的东西,find . -name .git -exec rm -rf {};
并决定在submodule foreach --recursive
知情的情况下使用。
我也期待着将来,当我将一个更复杂的项目转换为git时。它将共享相同的External.git子模块,expat模块,以及将成为expat模块的同级组件的其他几个模块,当然还有更多的子模块,它们不会在之下parent
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句