Ich möchte einen einzelnen Zweig (nicht alle) eines Remote-Repositorys abrufen und einen lokalen Tracking-Zweig erstellen, der weitere Aktualisierungen dieses Remote-Zweigs verfolgen kann. Die anderen Zweige im Remote-Repository sind sehr groß, daher möchte ich vermeiden, sie abzurufen. Wie mache ich das?
Bearbeiten: Ich habe das selbst herausgefunden, aber StackOverflow weigert sich, mich die Antwort als Antwort geben zu lassen, also werde ich sie stattdessen hier in die Frage einfügen.
Sie verwenden die Option -t, um Remote Add zu aktivieren, z.
git remote add -t remote-branch remote-name remote-url
Sie können mehrere " -t branch
" Optionen verwenden, um mehrere Zweige zu erfassen.
Antworten:
Hat für mich gearbeitet.
quelle
FETCH_HEAD
nach dem Abrufen verfügbar ist . Vielen Dank!git checkout FETCH_HEAD
zur Kasseremote_name
istorigin
. zB:git fetch origin <branch_name>
Ein Weg ist der folgende:
Dies richtet jedoch kein Tracking ein.
Weitere Informationen finden Sie in der Dokumentation zu git fetch .
EDIT : Wie @ user1338062 Hinweise unten : Wenn Sie nicht bereits über einen lokalen Klon des Repository, in dem Sie den neuen Zweig hinzufügen möchten, aber Sie wollen ein neues lokales Repository erstellen, dann die
git clone --branch <branch_name> --single-branch <repo_url>
bietet eine kürzere Lösung.quelle
git checkout <branchname>
, sehe ich, dass git den Tracking-Zweig automatisch einrichtet, wenn der einzige Zweig mit diesem Namen der Remote-Zweig ist.git clone
Jetzt unterstützt--branch
und--single-branch
Optionen, habe ich eine Antwort mit Demonstration gepostet .Ich weiß, dass es bereits viele Antworten gibt, aber diese Schritte haben bei mir funktioniert:
git fetch <remote_name> <branch_name>
git branch <branch_name> FETCH_HEAD
git checkout <branch_name>
Diese basieren auf der Antwort von @Abdulsattar Mohammed, dem Kommentar von @Christoph zu dieser Antwort und diesen anderen Fragen zum Stapelüberlauf und ihren Antworten:
quelle
Um eine vorhandene Fernbedienung zu aktualisieren, um bestimmte Zweige zu verfolgen, verwenden Sie nur:
Von
git help remote
:quelle
--single-branch
Repository und konnte später keine weiteren Zweige herunterladen. Vielen Dank!Ein Weg, es zu tun:
In .git / config sollte fetch für das Remote-Repo so eingestellt sein, dass alle Zweige abgerufen werden:
So rufen Sie den Remote-Zweig ab:
um einen lokalen Zweig 'Filialname' zu erstellen, der eingerichtet ist, um den 'Zweigstellennamen' des entfernten Zweigs vom Ursprung aus zu verfolgen.
um alle Zweige aufzulisten
quelle
Aus dem Beitrag des Autors kopiert:
Verwenden Sie die
-t
Optiongit remote add
, um z.Sie können mehrere
-t branch
Optionen verwenden, um mehrere Zweige zu erfassen.quelle
Wenn Sie die Standardeinstellung für "git pull" und "git fetch" so ändern möchten, dass nur bestimmte Zweige abgerufen werden, können Sie .git / config so bearbeiten, dass die Remote-Konfiguration wie folgt aussieht:
Dies ruft standardmäßig nur den Master vom Ursprung ab. Weitere Informationen finden Sie unter: https://git-scm.com/book/en/v2/Git-Internals-The-Refspec
BEARBEITEN: Ich habe gerade festgestellt, dass dies dasselbe ist, was die Option -t für git remote add tut. Zumindest ist dies eine gute Möglichkeit, dies nach dem Hinzufügen der Fernbedienung zu tun, wenn Sie die Fernbedienung nicht löschen und mit -t erneut hinzufügen möchten.
quelle
Der Vollständigkeit halber ist hier ein Beispielbefehl für eine neue Kaufabwicklung:
Wie in anderen Antworten erwähnt, setzt es sich
remote.origin.fetch
wie folgt zusammen:quelle
Git-Version: 2.74
So mache ich es:
quelle
Git Version 2.16.1.windows.4
Es reicht aus, nur einen Git-Abruf von remoteRepositoryName branchName durchzuführen
(eg: git fetch origin my_local_branch)
. Der Abruf wird durchgeführt und ein neuer lokaler Zweig mit demselben Namen wird erstellt, und die Verfolgung wird auf Remote-Zweig gesetzt.Führen Sie dann git checkout branchName aus
quelle
git branch
wenn Sie ihnMeine Problemumgehungen:
Wenn Sie keinen lokalen Klon haben:
quelle
<remote_name>
Sie eine aus, die Sie verwenden möchten (verwenden Sie sieorigin
und überspringen Sie Schritt 1.)git remote add <remote_name> <remote_url>
git fetch <remote_name> <branch>
<your_local_branch_name>
Sie eine aus, die Sie verwenden möchten. Könnte das gleiche sein wie<branch>
.git checkout <remote_name>/<branch> -b <your_local_branch_name>
Hoffentlich hilft das!
quelle
Die Antwort hängt tatsächlich von der aktuellen Liste der Tracking-Zweige ab, die Sie haben. Sie können einen bestimmten Zweig
git fetch <remote_name> <branch_name>
nur dann von Remote abrufen, wenn sich der Zweig bereits in der Liste der Verfolgungszweige befindet (Sie können ihn mit überprüfengit branch -r
).Nehmen wir an, ich habe die Fernbedienung zuvor mit der Option --single-branch geklont, und in diesem Fall ist der einzige Tracking-Zweig, den ich habe, der "geklonte". Ich bin ein wenig verwirrt über die Ratschläge, die Git-Konfiguration manuell zu optimieren sowie
git remote add <remote_name> <remote_url>
Befehle einzugeben. Da "git remote add" eine neue Fernbedienung einrichtet, funktioniert dies offensichtlich nicht mit dem vorhandenen Remote-Repository. Die Bereitstellung von "-t branch" -Optionen hat mir nicht geholfen.Falls die Fernbedienung vorhanden ist und der Zweig, den Sie abrufen möchten, in dieser Fernbedienung vorhanden ist:
Überprüfen
git branch -r
Sie, ob Sie diesen Zweig als Tracking-Zweig sehen können. Wenn nicht (wie in meinem Fall mit einem einzelnen Zweigklon), fügen Sie diesen Zweig der Tracking-Zweigliste hinzu, indem Sie "git remote set-branch" mit der Option --add verwenden:git remote set-branches --add <remote_name> <branch_name>
Jetzt können Sie einen bestimmten Zweig abrufen (hier andere Antworten duplizieren):
git fetch <remote_name> <branch_name>
Und erstellen und checken Sie einen neuen lokalen Zweig mit "checkout --track", der den gleichen "branch_name" wie ein Tracking-Zweig erhält:
git checkout --track <remote_name>/<branch_name>
quelle
Der einfachste Weg, das zu tun
Beispiel: Ich möchte einen Zweig vom Ursprung abrufen und zu diesem als aktuellem Arbeitszweig wechseln.
quelle