目標
ローカル マスターと異なる場合にのみブランチをプッシュしたいと考えています。より具体的には、ブランチがローカル マスターと同じコミットを指している場合、ブランチをプッシュしたくありません。
バックグラウンド
私の会社には何百もの git リポジトリがあり、git サブモジュールは使用していないため、システム全体のクリーンアップには非常に単純な bash スクリプトを使用しています。
for gitdir in `find ./ -name .git|sort`;
do
workdir=${gitdir%/*};
cd $workdir
eval "$*"
cd $BASE_DIR
done
私はこのように実行します:
./for_each_repo.sh 'git checkout -b <bname> && <some command> && git commit -m <message>''
次に、リポジトリに他の変更を加えるかもしれません。
最後に、次を実行します。
./for_each_repo.sh 'git push origin <bname>'
しかし、彼は、明らかに...、「空の」ブランチもプッシュします(つまり、ブランチを作成したばかりでコミットしていない場所)。