我有一个带有3个git子模块的git项目。现在我正在所有4个项目中积极开发(更改代码),我通常使用vim从主项目的基本目录开始。
因此,如果我使用git status
,我会看到主项目的状态。如果我使用git submodule status
,那么我会看到子项目的提交sha(不确定为什么每天都有用),如果我使用git submodule foreach git status
我看到哪些文件已更改,相对于当时考虑的子模块。
那么什么被认为是管理这个的简单方法?当我想提交任何内容时,我是否真的必须将目录更改为每个子模块?我如何从子模块之外提交(git submodule foreach git commit -m "message" path/to/file/in/one/submodule
会起作用,但会产生多个错误并感觉有风险)
我尝试git --git-dir=path/to/submodule {status,diff}
并且工作正常,但git --git-dir=path/to/submodule commit -m "message" path/to/file/in/one/submodule
不起作用,只是抱怨fatal: ambiguous argument 'path/to/file/in/one/submodule': unknown revision or path not in the working tree.
碰巧每个子模块都是同一个项目的稀疏结账的变种,所以不应该重叠,但我希望将来有很多子模块,所以有一些有效的方法吗?单个子模块上的git submodule command <submodule> git commit -m "" <path>