Frage

Ich habe versucht, git branch -r, aber das nur Listen entfernte Filialen, dass ich vor Ort verfolgt. Wie finde ich die Liste derer, die ich nicht habe? (Es spielt keine Rolle für mich, ob die Befehlslisten alle Remote-Niederlassungen oder nur diejenigen, die untracked sind.)

War es hilfreich?

Lösung

Für die überwiegende Mehrheit [1] der Besucher hier, die richtige und einfachste Antwort auf die Frage "Wie stelle ich alle Remote-Niederlassungen in Git 1.7+?" ist:

git branch -r

Für eine kleine Minderheit [1] git branch -r funktioniert nicht. Wenn git branch -r nicht funktioniert versuchen:

git ls-remote --heads <remote-name>

Wenn git branch -r nicht funktioniert, dann vielleicht als Cascabel sagt " haben Sie den Standard-Refspec geändert, so dass git fetch und git remote update alles tun, die nicht holen remote Filialen ".


[1] Zum Zeitpunkt der Erstellung dieser Fußnote 2018-Feb, ich auf die Kommentare sah und sehen, dass die git branch -r Werke für die überwiegende Mehrheit (ca. 90% oder 125 out a href von <=" https: //stackoverflow.com/questions/3471827/how-do-i-list-all-remote-branches-in-git-1-7#comment41488609_3472296">140 ).

Wenn git branch -r nicht funktioniert, Scheck git config --get remote.origin.fetch enthält einen Platzhalter (*) gemäß diese Antwort

Andere Tipps

remote show zeigt alle Zweige auf der Fernbedienung, einschließlich denen, die nicht vor Ort verfolgt werden und auch diejenigen, die noch nicht abgerufen worden.

git remote show <remote-name>

Es wird versucht, auch den Status des Zweiges in Bezug auf Ihrem lokales Repo zu zeigen:

> 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 listet alle Remote-Niederlassungen und git branch -a listet alle auf lokalen Niederlassungen und entfernten. Diese Listen bekommen veraltet though. Um diese Listen zu halten up-to-date, führt

git remote update --prune

, die Ihre lokale Niederlassung Liste mit allen neuen aus der Fernbedienung aktualisieren und entfernen Sie alle, die nicht mehr da sind. Das Ausführen dieses Update-Befehl ohne die --prune neue Zweige abrufen, aber nicht löschen diejenigen nicht mehr auf der Fernbedienung.

Sie können dieses Update beschleunigen, indem Sie einen Remote-Angabe, sonst wird es ziehen Updates von allen Fernbedienungen Sie hinzugefügt haben, wie so

git remote update --prune origin

Aber

git branch -ar

sollte es tun.

Sie können auch git fetch von einem git branch -r gefolgt tun. Ohne holen Sie sich die aktuellen Zweige nicht sehen.

Git Branching - Fern Branchen

git ls-remote

Git Dokumentation .

Die einfachste Art, wie ich gefunden:

git branch -a

TL, TR;

Dies ist die Lösung des 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 Befehl auszuführen ist git remote show [remote]. Dadurch werden alle Zweige zeigen, Remote- und lokalen, verfolgt und untracked.

Hier ist ein Beispiel von 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 Remote-Niederlassungen erhalten wollen, können wir grep verwenden. Der Befehl wir verwenden wollen würde 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 auch ein Alias ??für diese erstellen:

git config --global alias.branches "!git remote show origin | grep \w*\s*(new|tracked) -E"

Dann können Sie einfach laufen git branches.

Mit GitBash, können Sie:

  

git branch -a

try this ....

git fetch origin
git branch -a

Stellen Sie sicher, dass der Remote-Ursprung Sie Auflistung ist wirklich das Repository, dass Sie wollen, und nicht ein älterer Klon.

ich am Ende tut ein Chaos Shell-Pipeline zu bekommen, was ich wollte, nur Zweige vom Ursprung fusionierte Fern:

git branch -r --all --merged \
    | tail -n +2 \
    | grep -P '^  remotes/origin/(?!HEAD)' \
    | perl -p -e 's/^  remotes\/origin\///g;s/master\n//g'

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

Liste alle Remote-Niederlassungen, einschließlich Nachrichten begehen, begehen ID, die durch Fern Zweig bezeichnet werden.

Ich würde verwenden:

git branch -av

Dieser Befehl zeigt Ihnen nicht nur die Liste aller Branchen, einschließlich Remote-Niederlassungen mit /remote Start, sondern bietet Ihnen die * Feedback auf das, was Sie auf dem Laufenden und der letzte Commit-Kommentar.

Wenn es eine Remote-Zweig ist, dass Sie wissen sollten aufgeführt werden, aber es ist nicht aufgelistet bekommen, möchten Sie vielleicht prüfen, ob Ihre Herkunft eingerichtet ist richtig mit diesem:

git remote show origin

Wenn das alles gut ist, vielleicht sollten Sie ein Update ausführen:

git remote update

Das läuft erfolgreich Unter der Annahme, sollten Sie in der Lage sein zu tun, was die anderen Antworten sagen:

git branch -r

Führen Sie einfach einen git fetch Befehl. Es wird alle entfernten Niederlassungen zu Ihrem lokalen Repo ziehen und dann eine git branch -a zur Liste tun alle Zweige.

Versuch

 git branch -at
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top