Ich habe git branch -r
ausprobiert, aber das listet nur entfernte Verzweigungen auf, die ich lokal verfolgt habe. Wie finde ich die Liste derer, die ich nicht habe? (Es ist mir egal, ob der Befehl alle entfernte Zweige auflistet oder nur die, die nicht erfasst werden.)
Für die überwiegende Mehrheit[1] von Besuchern hier, die richtige und einfachste Antwort auf die Frage "Wie liste ich alle entfernten Zweige in Git 1.7+ auf?" ist:
git branch -r
Für eine kleine Minderheit[1] git branch -r
funktioniert nicht. Wenn git branch -r
nicht funktioniert, versuchen Sie Folgendes:
git ls-remote --heads <remote-name>
Wenn git branch -r
nicht funktioniert, kann es sein, dass Cascabel"Sie haben die Standardreferenzspezifikation so geändert, dass git fetch
und git remote update
nicht ' t alle Zweige von remote
holen " .
[1] Beim Schreiben dieser Fußnote vom 2018. Februar habe ich mir die Kommentare angesehen und festgestellt, dass der git branch -r
für die überwiegende Mehrheit funktioniert (ungefähr 90% oder 125 von 140) ).
Wenn git branch -r
nicht funktioniert, prüfen Sie, ob git config --get remote.Origin.fetch
einen Platzhalter (*
) gemäß diese Antwort enthält
remote show
zeigt alle Verzweigungen auf der Fernbedienung an, einschließlich derer, die nicht lokal verfolgt werden, und sogar der noch nicht abgerufenen.
git remote show <remote-name>
Es wird auch versucht, den Status der Zweige relativ zu Ihrem lokalen Repo anzuzeigen:
> git remote show Origin
* remote Origin
Fetch URL: C:/git/.\remote_repo.git
Push URL: C:/git/.\remote_repo.git
HEAD branch: master
Remote branches:
branch_that_is_not_even_fetched new (next fetch will store in remotes/Origin)
branch_that_is_not_tracked tracked
branch_that_is_tracked tracked
master tracked
Local branches configured for 'git pull':
branch_that_is_tracked merges with remote branch_that_is_tracked
master merges with remote master
Local refs configured for 'git Push':
branch_that_is_tracked pushes to branch_that_is_tracked (fast-forwardable)
master pushes to master (up to date)
git branch -a | grep remotes/*
Mit git branch -r
werden alle entfernten Zweige und git branch -a
alle Zweige auf lokaler und entfernter Ebene aufgelistet. Diese Listen werden jedoch veraltet. Um diese Listen auf dem neuesten Stand zu halten, führen Sie sie aus
git remote update --Prune
dadurch wird Ihre lokale Zweigliste mit allen neuen aus der Ferne aktualisiert und alle entfernt, die nicht mehr vorhanden sind. Wenn Sie diesen Aktualisierungsbefehl ohne --Prune ausführen, werden neue Verzweigungen abgerufen, jedoch nicht mehr auf der Remote-Station gelöscht.
Sie können dieses Update beschleunigen, indem Sie eine Fernbedienung angeben. Andernfalls werden Updates von allen hinzugefügten Fernbedienungen abgerufen
git remote update --Prune Origin
Aber
git branch -ar
sollte es tun.
Sie können auch git fetch
gefolgt von einem git branch -r
ausführen. Ohne Abrufen sehen Sie nicht die aktuellsten Zweige.
Der einfachste Weg, den ich gefunden habe:
git branch -a
TL; TR;
Dies ist die Lösung Ihres Problems:
git remote update --Prune # To update all remotes
git branch -r # To display remote branches
oder:
git remote update --Prune # To update all remotes
git branch <TAB> # To display all branches
Der beste auszuführende Befehl ist git remote show [remote]
. Dies zeigt alle entfernten und lokalen Zweige, verfolgt und nicht verfolgt.
Hier ein Beispiel aus einem Open Source-Projekt:
> git remote show Origin
* remote Origin
Fetch URL: https://github.com/OneBusAway/onebusaway-Android
Push URL: https://github.com/OneBusAway/onebusaway-Android
HEAD branch: master
Remote branches:
Amazon-rc2 new (next fetch will store in remotes/Origin)
Amazon-rc3 new (next fetch will store in remotes/Origin)
arrivalStyleBDefault new (next fetch will store in remotes/Origin)
develop tracked
master tracked
refs/remotes/Origin/branding stale (use 'git remote Prune' to remove)
Local branches configured for 'git pull':
develop merges with remote develop
master merges with remote master
Local refs configured for 'git Push':
develop pushes to develop (local out of date)
master pushes to master (up to date)
Wenn wir nur die entfernten Zweige erhalten wollen, können wir grep
verwenden. Der Befehl, den wir verwenden möchten, wäre:
grep "\w*\s*(new|tracked)" -E
Mit diesem Befehl:
> git remote show Origin | grep "\w*\s*(new|tracked)" -E
Amazon-rc2 new (next fetch will store in remotes/Origin)
Amazon-rc3 new (next fetch will store in remotes/Origin)
arrivalStyleBDefault new (next fetch will store in remotes/Origin)
develop tracked
master tracked
Sie können dazu auch einen Alias erstellen:
git config --global alias.branches "!git remote show Origin | grep \w*\s*(new|tracked) -E"
Dann können Sie einfach git branches
ausführen.
Mit GitBash können Sie Folgendes verwenden:
Git-Zweig -a
Stellen Sie sicher, dass es sich bei dem von Ihnen aufgelisteten Remote-Ursprung wirklich um das gewünschte Repository handelt und nicht um einen älteren Klon.
Mit diesem Befehl
git log -r --oneline --no-merges --simplify-by-decoration --pretty=format:"%n %Cred CommitID %Creset: %h %n %Cred Remote Branch %Creset :%d %n %Cred Commit Message %Creset: %s %n"
CommitID : 27385d919
Remote Branch : (Origin/ALPHA)
Commit Message : New branch created
Listen Sie alle entfernten Zweigstellen auf, einschließlich Festschreibungsnachrichten, Festschreibungs-ID, auf die von entfernten Zweigstellen verwiesen wird.
versuche dies....
git fetch Origin
git branch -a
Führen Sie einfach den Befehl git fetch
aus. Es werden alle entfernten Zweige zu Ihrem lokalen Repository gezogen und dann ein git branch -a
ausgeführt, um alle Zweige aufzulisten.
Am Ende machte ich eine Chaos-Shell-Pipeline, um das zu bekommen, was ich wollte.
git branch -r --all --merged \
| tail -n +2 \
| grep -P '^ remotes/Origin/(?!HEAD)' \
| Perl -p -e 's/^ remotes\/Origin\///g;s/master\n//g'
Wenn ein entfernter Zweig aufgeführt werden soll, der jedoch nicht aufgeführt wird, möchten Sie möglicherweise überprüfen, ob Ihr Origin ordnungsgemäß eingerichtet ist:
git remote show Origin
Wenn das alles gut ist, sollten Sie vielleicht ein Update ausführen:
git remote update
Vorausgesetzt, dass dies erfolgreich ausgeführt wird, sollten Sie in der Lage sein, das zu tun, was die anderen Antworten sagen:
git branch -r
Ich würde ... benutzen:
git branch -av
Dieser Befehl zeigt Ihnen nicht nur die Liste aller Zweige, einschließlich entfernter Zweige, die mit /remote
beginnen, sondern gibt Ihnen auch das *
-Feedback zu den aktualisierten Inhalten und die letzten Festschreibungskommentare.