2012-04-18 11 views
6

gitリポジトリに複数のブランチがあるとします。私は、枝のいくつかが上流に押し込まれなかったか、古くなった、あるいはその両方である(すなわち分岐した)と疑う。リモートとの同期が外れているローカルブランチを調べる

1つのコマンドでどのブランチがリモートと同期していないかを調べる方法はありますか? (スクリプトの作成はOKですが、すでにそのようなスクリプトがあるかどうかを知りたいのですが)。

答えて

5

のために動作します。必要な情報を与える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 
0

さて、リモートが変更されたかどうかを知るためには、少なくとも1つのgit fetchが必要です。その後、gitのステータスは、あなたがリモートの後ろにいるか、リモートの前にいるのか、またどれくらいコミットしているのかを伝えます。

+0

はい、これは私がやりたいことですが、それほどインタラクティブではありません。 Gitのステータスは1つのブランチしか表示しないので、それらを繰り返し処理しなければなりません。 – Dallaylaen

+0

'git branch -v'は必要な情報を与えます。 – Dallaylaen

4

これはあなたを助けるかもしれない:git remote show origin私はわからないが、それは私がスクリプトをやった私

+0

それは私が必要とするものを表示していませんが、 'git branch -v'はそうであることが判明しています。 – Dallaylaen

関連する問題