いくつかのブランチを持つ git リポジトリがあるとします。いくつかのブランチが上流にプッシュされていないか、時代遅れであるか、またはその両方 (つまり分岐) であると思われます。
1 つのコマンドでリモートと同期していないブランチを見つける方法はありますか? (スクリプトを書くことは問題ありませんが、そのようなスクリプトが既にあるかどうか知りたいです)。
いくつかのブランチを持つ git リポジトリがあるとします。いくつかのブランチが上流にプッシュされていないか、時代遅れであるか、またはその両方 (つまり分岐) であると思われます。
1 つのコマンドでリモートと同期していないブランチを見つける方法はありますか? (スクリプトを書くことは問題ありませんが、そのようなスクリプトが既にあるかどうか知りたいです)。
スクリプトを作成しました。必要git branch -v
な情報が得られます。
~/bin/git-total.sh:
#!/bin/sh
for DIR in "$@"; do
# Only git dirs interesting
[ -d "$DIR/.git" ] && cd "$DIR" || continue
# git branch -v gives ahead/behind info
# using perl - sorry for this
MOD=`git branch -v | perl -wlne '/^..(\S+)\s+([a-f0-9]+)\s+(\[ahead\s+(\d+)\])/ or next; print "# Branch ahead: $1"; '`;
# a series of UGLY HACKs to get pretty-printing
[ ! -z "$MOD" ] && MOD="
$MOD"
git status | grep -q '^# Changes' && MOD="$MOD
# Uncommitted changes present"
# print summary
[ ! -z "$MOD" ] && echo -e "$DIR:$MOD"
cd -
done
これはあなたを助けるかもしれません:git remote show origin
私にはわかりませんが、私にとってはうまくいきます
プロジェクトuncommitted
はあなたが望むことをします。
さて、リモートが変更されたかどうかを知るためには、リモート参照を更新するために少なくとも1つのgitフェッチが必要です。その後、git statusは、リモートの後ろにいるのか進んでいるのか、そしてコミットの数を示します。