9

いくつかのブランチを持つ git リポジトリがあるとします。いくつかのブランチが上流にプッシュされていないか、時代遅れであるか、またはその両方 (つまり分岐) であると思われます。

1 つのコマンドでリモートと同期していないブランチを見つける方法はありますか? (スクリプトを書くことは問題ありませんが、そのようなスクリプトが既にあるかどうか知りたいです)。

4

4 に答える 4

8

スクリプトを作成しました。必要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
于 2012-06-09T08:55:15.867 に答える
5

これはあなたを助けるかもしれません:git remote show origin私にはわかりませんが、私にとってはうまくいきます

于 2012-04-18T14:27:01.780 に答える
1

プロジェクトuncommittedはあなたが望むことをします。

于 2015-06-20T10:57:54.283 に答える
0

さて、リモートが変更されたかどうかを知るためには、リモート参照を更新するために少なくとも1つのgitフェッチが必要です。その後、git statusは、リモートの後ろにいるのか進んでいるのか、そしてコミットの数を示します。

于 2012-04-18T13:30:19.620 に答える