2012-04-18 5 views
6

여러 브랜치가있는 git 저장소가 있다고 가정하십시오. 일부 지점이 업스트림으로 푸시되지 않았거나 구식이거나 둘 다 (즉, 분기 됨) 의심 스럽습니다.원격지와 동기화되지 않는 로컬 브랜치를 확인하십시오.

하나의 명령으로 어떤 분기가 원격과 동기화되지 않는지 알아낼 방법이 있습니까? (스크립트 작성은 괜찮지 만 이미 스크립트가 있는지 알고 싶습니다.)

답변

5

내가 스크립트를 수행 한 것이 작동합니다. git branch -v은 필요한 정보를 제공합니다.

~/빈/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

글쎄, 리모컨 변경 여부를 알기 위해서는 원격 참조를 업데이트하기 위해 적어도 하나의 자식 패치가 필요합니다. 그 후 git 상태는 원격 또는 원격 명령보다 얼마나 많은 커밋인지 알려줍니다.

+0

그래, 그게 내가하고 싶은, 덜 대화 형 방식으로하고 싶습니다. Git 상태는 하나의 브랜치만을 보여주기 때문에, 그 브랜치를 반복해야하고 아마도 그렇게하기 전에 로컬 변경 사항을 숨긴다. – Dallaylaen

+0

'git branch -v'는 필요한 정보를줍니다. – Dallaylaen

4

이 당신을 도울 수 있습니다 git remote show origin 나는 확실하지 않다 그러나 저

+0

내가 필요한 것을 보여주지는 않지만,'git branch -v'는 그렇게하는 것으로 밝혀졌습니다. – Dallaylaen

관련 문제