在git submodule foreach中提交

时间:2016-10-06 14:08:34

标签: git sh git-submodules git-config

我有一个包含子模块的git存储库。通常我使用相同的提交消息提交repo和submodule。目前,当我想提交我的repo和子模块时,我正在做以下事情:

cd submodule
git add --all
git commit -m "message"
git push
cd ..
git add --all
git commit -m "message"
git push

我想要一个别名,允许我用一个命令执行此操作,例如

git commit-including-submodule "blah"

听起来很简单,但我对别名有一些问题。我最接近的是:

[alias]
   commit-including-submodule = "!f() { \
         if [ -u $1 ]; then \
            echo "commit message required"; \
         else \
            git submodule foreach 'git add --all && git commit -m \"$1\"'; \
            git add --all && git commit -m $1; \
            echo "success"; \
         fi; \
       }; f"

然而,子模块中的提交消息是

  

git add --all&& git commit -m“$ 1”

是的,这是实际的提交消息,这看起来有点奇怪。我无法弄清楚这一点。有人可以帮忙吗?

感谢。

1 个答案:

答案 0 :(得分:0)

看起来您可能无法成功转发引号。我认为这应该有用。

[alias]
   commit-including-submodule = "!f() { \
         if [ -u $1 ]; then \
            echo "commit message required"; \
         else \
            git submodule foreach 'git add --all && git commit -m '"$1"'; \
            git add --all && git commit -m $1; \
            echo "success"; \
         fi; \
       }; f"