我当前的 git status
是:
modified: Gemfile
modified: Gemfile.lock
modified: ... many more files
modified: submodule_1 (new commits)
modified: submodule_2 (new commits)
modified: ... many more updated submodules ...
除了子模块中的新提交,我如何git add -u
?
我想要实现的是相当于git add -u
,然后是git reset HEAD submodule_1 submodule_2 ... submodule_n
,或者相当于git添加 -u Gemfile Gemfile.lock ...所有其他不是子模块的文件...
最佳答案
完成 git add -u 后,您需要重置所有子模块路径。
如“List submodules in a git repository”中所述
git config --file .gitmodules --get-regexp path | awk '{ print $2 }' | xargs git reset --
这将列出所有子模块路径并对每个路径执行 git reset
。
类似的想法,from this gist:
for i in `git config -f .gitmodules --get-regexp path | cut -d" " -f2` ; do git reset -- $i ; done
最终解决方案,执行 git add -u
并重置子模块的 bashrc/zshrc 函数:
gitaddus() {
git add -u
git config -f .gitmodules --get-regexp path | awk '{ print $2 }' | xargs git reset -- >/dev/null
git status
}
(仍有改进的余地,例如检查哪些子模块已经添加到索引中,这样我们就不会 git reset
这些。)
关于git - 除了子模块中的新提交之外,我如何 `git add -u`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41642315/