找出哪些本地分支与远程同步

时间:2012-04-18 13:27:40

标签: git

假设我有一个包含多个分支的git存储库。我怀疑有些分支没有被推向上游,或者已经过时,或者两者都被推(即分叉)。

有没有办法通过一个命令找出哪些分支与远程同步? (编写脚本是可以的,但我想知道是否已有这样的脚本)。

4 个答案:

答案 0 :(得分:6)

我做了一个剧本。结果git branch -v给出了必要的信息。

〜/斌/ 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

答案 1 :(得分:4)

这可能会对您有所帮助:git remote show origin我不确定但它对我有用

答案 2 :(得分:1)

The project uncommitted做你想做的事。

答案 3 :(得分:0)

好吧,为了知道遥控器是否已经改变,你需要至少一次git fetch来更新你的远程引用。之后,git状态会告诉您是否落后于遥控器以及提交了多少次。