5

git add -Aとを使用するgit commit -aことで、現在のリポジトリにすべての変更を追加/コミットできます。ただし、すべてのサブモジュールを追加/コミットに含めて、それぞれに同じコミットメッセージを適用する方法はありますか?

4

2 に答える 2

6

エイリアスを使用できます。スクリプトを作成する:例~/supercommit.sh

#!/bin/bash -e
if [ -z $1 ]; then
    echo "You need to provide a commit message"
    exit
fi

git submodule foreach git add -A .
git submodule foreach git commit -am "$1"

git add -A .
git commit -am "$1"

そして、実行可能としてマークします(chmod +x)。次に、エイリアスを作成します。

git config alias.supercommit '!~/supercommit.sh "$@"; #'

それで十分です(少しテストします)

于 2012-12-07T20:59:12.690 に答える
1

さて、これは9年前に質問され、答えられました、そしてそれは私が同じことを探していたときに私を助けました。しかし、私はそれを機能させるためにいくつかの問題に直面したので、同じ問題に直面する可能性のある他の人を助けるためにこれを投稿しています。

問題 :

  • 「2行目:[:引数が多すぎます」で失敗します
  • サブモジュールに変更がない場合は失敗します

修正:

  • 2行目に$1の前後に引用符( ")を追加します。これがないと、複数の単語を含むコメントは複数の引数として扱われます。
  • コミットする前に、サブモジュールが変更を段階的に行っているかどうかを確認してください

更新されたコード

#!/bin/bash -e
if [ -z "$1" ]; then
    echo "You need to provide a commit message"
    exit
fi

git submodule foreach "
    git add -A .
    git update-index --refresh
    commits=\$(git diff-index HEAD)
    if [ ! -z \"\$commits\" ]; then
        git commit -am \"$1\"
    fi"

git add -A .
git commit -am "$1"
于 2021-12-15T01:11:11.703 に答える