gitリポジトリに複数のブランチがあるとします。私は、枝のいくつかが上流に押し込まれなかったか、古くなった、あるいはその両方である(すなわち分岐した)と疑う。リモートとの同期が外れているローカルブランチを調べる
1つのコマンドでどのブランチがリモートと同期していないかを調べる方法はありますか? (スクリプトの作成はOKですが、すでにそのようなスクリプトがあるかどうかを知りたいのですが)。
gitリポジトリに複数のブランチがあるとします。私は、枝のいくつかが上流に押し込まれなかったか、古くなった、あるいはその両方である(すなわち分岐した)と疑う。リモートとの同期が外れているローカルブランチを調べる
1つのコマンドでどのブランチがリモートと同期していないかを調べる方法はありますか? (スクリプトの作成はOKですが、すでにそのようなスクリプトがあるかどうかを知りたいのですが)。
のために動作します。必要な情報を与えるgit branch -v
を出します。
〜/ binに/ git-total.sh:何をしたいんuncommitted
プロジェクトの
#!/bin/sh
for DIR in "[email protected]"; 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
さて、リモートが変更されたかどうかを知るためには、少なくとも1つのgit fetchが必要です。その後、gitのステータスは、あなたがリモートの後ろにいるか、リモートの前にいるのか、またどれくらいコミットしているのかを伝えます。
これはあなたを助けるかもしれない:git remote show origin
私はわからないが、それは私がスクリプトをやった私
それは私が必要とするものを表示していませんが、 'git branch -v'はそうであることが判明しています。 – Dallaylaen
はい、これは私がやりたいことですが、それほどインタラクティブではありません。 Gitのステータスは1つのブランチしか表示しないので、それらを繰り返し処理しなければなりません。 – Dallaylaen
'git branch -v'は必要な情報を与えます。 – Dallaylaen