2012-04-18 54 views
6

假设我有一个包含多个分支的git存储库。我怀疑有些分支没有推上游,或者已经过时,或者两者(即分歧)。找出哪些本地分支与远程不同步

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

回答

5

我做了一个脚本。原来git branch -v给出了必要的信息。

〜/斌/ git-total.sh:

#!/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

那么,为了知道远程是否发生了变化,至少需要一次git获取来更新远程引用。在那之后,git状态会告诉你,你是在远程还是在远程,有多少次提交。

+0

是的,这就是我想要做的,只是以一种不太互动的方式。 Git状态只显示一个分支,所以我必须遍历它们,并且可能在这样做之前隐藏我的本地更改(如果有的话)。 – Dallaylaen 2012-04-18 13:49:36

+0

原来'git branch -v'给出了必要的信息。 – Dallaylaen 2012-06-09 08:57:26

4

这可以帮助你:git remote show origin我不知道,但我的作品

+0

它没有显示我需要什么,但事实证明,'git branch -v'。 – Dallaylaen 2012-06-09 11:06:48

相关问题