2016-03-31 12 views
1

Ich arbeite derzeit an einem Projekt mit einem Team. Dieses Projekt hat viele Zweige, die parallel entwickelt wurden.Liste unpushed commits in allen Niederlassungen

Hier ist das Problem, das ich angetroffen habe: Ich arbeite an mehreren Branchen und begehe so viel wie möglich. Und anscheinend vergisst ich manchmal, die Commits zu schieben, sobald ich mit der Arbeit an einem Zweig fertig bin. Dies führt dazu, dass die Änderungen für lange Zeit nicht geändert wurden, und natürlich würden andere Mitglieder des Teams an diesen "unfixierten" Zweigen arbeiten und es könnte Probleme verursachen. Und zu keiner Zeit, während ich an anderen Zweigen arbeite, sagt Git mir, dass ich Commits in anderen Zweigen als dem aktuellen deaktiviert habe.

Gibt es einen Befehl, ähnlich wie git cherry -v, der auf alle Zweige verpasste Commits anzeigen würde?

Ich bemerkte, dass ich git cherry -v origin/branchA branchA verwenden konnte, um unpushed Commit von branchA von jedem Zweig anzuzeigen. Es ist ziemlich nah an dem, was ich suche, aber ich will es für alle Zweige zur gleichen Zeit. Gibt es eine Möglichkeit, es auf alle Branchen zu verallgemeinern? (Ich erwarte nicht, sich daran zu erinnern, auf dem Zweig schiebe ich vergessen zu)

+0

es verwendet nicht Kirsche, aber 'git Zweig -vv' bietet einen guten Ausgangspunkt –

Antwort

0

Sie könnten ein einfaches Skript schreiben:

(In .bashrc)

alias git-list-unpushed='git for-each-ref --format "%(refname)" | grep "refs/remotes" | sed "[email protected]/remotes/@@" | while read branch; do echo "$branch"; git cherry -v "$branch" "${branch/origin\//}"; done' 

Sie können dann laufen git- Listen nicht gedrückten für jeden Zweig

+1

Ich hoffte, einen Git-Befehl zu finden ... Aber trotzdem habe ich dieses Skript versucht (ich bin nicht vertraut mit Skripten, also ich don verstehe nicht alles, und es funktioniert nicht. Ich bekomme eine Menge Müll ('fatal: Unbekanntes Commit' für jedes Commit) und ich kann die nicht gepackten Änderungen nicht sehen. – Puck

0

Basierend auf edi9999 Idee eine Zusammenfassung aller nicht gedrückten Commits zu sehen, habe ich das folgende Skript:

#!/bin/sh 

branches=$(git for-each-ref --format='%(upstream:short):%(refname:short)' refs/heads) 
for raw_branch in $branches; do 
    remote_branch=$(cut -d ':' -f 1 <<< "$raw_branch") 
    local_branch=$(cut -d ':' -f 2 <<< "$raw_branch") 

    echo $local_branch 
    if [ "x$remote_branch" == "x" ]; then 
    echo WARNING: No remote branch! 
    else 
    git cherry -v "$remote_branch" "$local_branch" 
    fi 

    echo 
done 

Da die : immer vorhanden ist, sollte gut sein.

Verwandte Themen