4812 Stimmen

Wie man alle entfernten Zweige in Git klont

J'ai un master und eine development Zweig, die beide nach GitHub . Ich habe clone d, pull und fetch aber ich kann nach wie vor nichts anderes bekommen als die master Zweig zurück.

Ich bin mir sicher, dass ich etwas Offensichtliches übersehe, aber ich habe das Handbuch gelesen, und ich bekomme überhaupt keine Freude.

102voto

murphytalk Punkte 1277

Bezüglich,

git checkout -b experimental origin/experimental

mit

git checkout -t origin/experimental

oder die etwas ausführlichere, aber leichter zu merkende

git checkout --track origin/experimental

könnte besser sein, wenn es darum geht, ein entferntes Repository zu verfolgen.

96voto

nobody Punkte 737

Aliasnamen verwenden. Obwohl es in Git keine nativen Einzeiler gibt, können Sie Ihre eigenen definieren als

git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'

und verwenden ihn dann als

git clone-branches

83voto

Luuk Paulussen Punkte 889

Der Fetch, den Sie durchführen, sollte alle entfernten Zweige erhalten, aber er wird keine lokalen Zweige für sie erstellen. Wenn Sie gitk sollten Sie die entfernten Zweige als "remotes/origin/dev" oder so ähnlich beschrieben sehen.

Um einen lokalen Zweig auf der Grundlage eines entfernten Zweigs zu erstellen, gehen Sie wie folgt vor:

git checkout -b dev refs/remotes/origin/dev

Das Ergebnis sollte in etwa so aussehen:

Branch dev set up to track remote branch refs/remotes/origin/dev. Switched to a new branch "dev"

Wenn Sie nun auf der dev Zweig, "git pull" aktualisiert Ihren lokalen dev zum gleichen Punkt wie die Fernbedienung dev Zweigstelle. Beachten Sie, dass alle Zweige abgerufen werden, aber nur der Zweig, auf dem Sie sich befinden, an die Spitze des Baums gezogen wird.

77voto

Jacob Fike Punkte 901

Dies ist der beste Weg, dies zu tun:

mkdir repo
cd repo
git clone --bare path/to/repo.git .git
git config --unset core.bare
git reset --hard

Zu diesem Zeitpunkt haben Sie eine vollständige Kopie des entfernten Repositorys mit allen Zweigen (verifizieren Sie mit git branch ). Sie können verwenden --mirror anstelle von --bare wenn Ihr entferntes Repository über eigene Remotes verfügt.

63voto

Cerran Punkte 1937

Warum Sie nur "Meister" sehen

git clone lädt alle entfernten Zweige herunter, betrachtet sie aber immer noch als "entfernt", auch wenn sich die Dateien in Ihrem neuen Repository befinden. Es gibt eine Ausnahme, nämlich dass der Klonprozess einen lokalen Zweig namens "master" aus dem entfernten Zweig namens "master" erzeugt. Standardmäßig, git branch zeigt nur lokale Zweige an, weshalb Sie nur "master" sehen.

git branch -a zeigt alle Zweige an, einschließlich abgelegener Zweigstellen .


Wie man lokale Zweigstellen erhält

Wenn Sie tatsächlich an einem Zweig arbeiten wollen, werden Sie wahrscheinlich eine "lokale" Version davon benötigen. So erstellen Sie einfach lokale Zweige aus entfernten Zweigen (ohne sie auszuchecken und damit den Inhalt Ihres Arbeitsverzeichnisses zu verändern) können Sie das so machen:

git branch branchone origin/branchone
git branch branchtwo origin/branchtwo
git branch branchthree origin/branchthree

In diesem Beispiel, branchone ist der Name eines lokalen Zweigs, den Sie auf der Grundlage von origin/branchone Wenn Sie stattdessen lokale Zweige mit unterschiedlichen Namen erstellen möchten, können Sie dies tun:

git branch localbranchname origin/branchone

Sobald Sie einen lokalen Zweig erstellt haben, können Sie ihn mit git branch (denken Sie daran, Sie brauchen keine -a zu den örtlichen Zweigstellen).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X