9

假设我有一个带有多个分支的 git 存储库。我怀疑一些分支没有被推到上游,或者已经过时,或者两者兼而有之(即分歧)。

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

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

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

于 2012-04-18T13:30:19.620 回答