2012-04-18 15 views
6

Załóżmy, że mam repozytorium git z kilkoma gałęziami. Podejrzewam, że niektóre gałęzie nie były wypychane w górę strumienia, są przestarzałe lub obie (tj. Rozbieżne).Dowiedz się, które lokalne oddziały nie są zsynchronizowane ze zdalnym

Czy istnieje sposób sprawdzenia, które gałęzie nie są zsynchronizowane z pilotem za pomocą jednego polecenia? (Pisanie scenariusza jest OK, ale chciałbym się dowiedzieć, czy jest już taki skrypt).

Odpowiedz

5

Zrobiłem skrypt. Okazało się, że git branch -v podaje niezbędne informacje.

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

Cóż, aby sprawdzić, czy pilot się zmienił, potrzeba co najmniej jednego pobrania git, aby zaktualizować zdalne odwołania. Po tym statusie git powie Ci, czy jesteś za lub przed pilotem i ile razy zatwierdziłeś.

+0

Tak, właśnie to chciałbym zrobić, tylko w mniej interaktywny sposób. Status Git pokazuje tylko jedną gałąź, więc będę musiał iterować przez nie i prawdopodobnie przechować moje lokalne zmiany (jeśli są) przed tym. – Dallaylaen

+0

Włącza 'gałąź git -v' zawiera niezbędne informacje. – Dallaylaen

4

To może pomóc: git remote show origin Nie jestem pewien, ale to działa na mnie

+0

Nie pokazuje tego, czego potrzebuję, ale okazuje się, że 'git branch -v' ma. – Dallaylaen

Powiązane problemy