shell 最新版本的Git Submodule

deyfvvtc  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(116)

简介

你好,
我正在使用子模块,在一个特定的项目中,我正在工作,我有嵌套到3层或更多的子模块。
有时候我会在嵌套最深的子模块中做一个小的改变,我希望这个改变能在所有使用它作为依赖项的父子模块上发生。
到目前为止,当我进行这样的更改时,我会将更改提交到嵌套最深的子模块中,然后是cd ..,直到我在一个父目录中将其作为子模块,然后我在每个目录中使用git add submodule_name && git commit -m "update submodule version" && git push",因为我向上冒泡目录,直到每个父子模块都更新了它们的依赖关系。

具体

如果我有git仓库A, B, C,其中C被添加为B的子模块,然后B被添加为A的子模块,目录结构为A/B/C,当我对C进行微小更改时,我提交并推送该更改,返回到B,然后使用git add C && git commit -m "update version of C" && git push",然后返回到A并使用git add B && git commit -m "update version of B" && git push"
我想知道是否有一个内置于git本身的命令或一个小脚本可以简化这个过程。

qlzsbp2j

qlzsbp2j1#

# after you've committed in your submodule:
( this=`git rev-parse --show-toplevel`
  while up=$(git -C "$this"/.. rev-parse --show-toplevel 2>&-)
  do
        cd "$this"/..
        git add ${this##*/}
        git commit -m "updating ${this#$up/}"
        this=$up
  done
)

我会做所有的添加和提交

相关问题