Holen Sie sich einen bestimmten Zweig mit Git


19

Ich möchte den Quellcode mit git aus dem master-next-Zweig herunterladen, wie im Xilinx-Wiki beschrieben .

Ich habe es versucht:

#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git

Initialized empty Git repository in /home/Hannan/master-next/.git/
fatal: remote error:
Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name
Email support@github.com for help

Auch dies ist fehlgeschlagen:

# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git
Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/
fatal: remote error:
Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name
Email support@github.com for help

Der Befehl, der funktioniert, ist:

 git clone git://github.com/Xilinx/u-boot-xlnx.git

Aber woher weiß ich, dass dies tatsächlich den Master-Next-Zweig und nicht den Master-Zweig abruft? Wie rufe ich mit git einen bestimmten Zweig richtig ab?

Ich verwende RHEL 6, auf das über PuTTY zugegriffen wird.

Antworten:


16

Erwarten Sie, wie die Fehlermeldung besagt, git cloneein Git-Repository. Sie können nicht den Namen einer Verzweigung in den Pfad so "hinzufügen". Siehe Filialen in Git .

Sie können einen einzelnen Zweig (und dessen Verlauf) klonen: git clone <url> --branch <branch> --single-branch

Sehen git help clone.

Mit dem von Ihnen ausgeführten Klonbefehl haben Sie jedoch eine Kopie des gesamten Repository erhalten. Sie können die vorhandenen Zweige mit git branchund weitere Details zu diesen Zweigen mit anzeigen git show-branch.

Wechseln Sie zu der gewünschten Filiale mit git checkout branch-name.

In den ersten Kapiteln des Pro Git- Buchs (online verfügbar) werden die grundlegenden Befehle näher erläutert.


"Der von Ihnen ausgeführte Klonbefehl hat Ihnen eine Kopie des gesamten Repository geliefert". Ganzes Repository bedeutet, dass beide Zweige zusammengeführt wurden?
user2799508

Nein, sie werden nicht zusammengeführt. Ein Branch in Git ist keine Kopie des gesamten Verzeichnisses, wie hier erklärt .
Leiaz

Was ich getan habe ist folgendes: "git clone -b master-next github.com/Xilinx/u-boot-xlnx.git " ist das nicht korrekt?
user2799508

Du brauchst keinen Klon mehr. Der Befehl, den Sie in Ihrer Frage gezeigt haben, gab Ihnen das Repository mit allen Zweigen. Das ist aber auch richtig. Dies entspricht dem git checkout master-nextKlonen nach dem Klonen.
Leiaz

13

Dieser Befehl sollte funktionieren:

$ git fetch origin [branch]

Der obige Befehl ruft nur Metadaten aus dem Remote-Repository ab und führt keine Quellen zusammen.

Wenn Sie die Quellen abrufen und zusammenführen möchten, lautet der Befehl:

$ git pull origin [branch]

Seien Sie vorsichtig mit dem Zweig, in dem Sie den Befehl merge ausführen. Hier werden die Quellen zusammengeführt.


Ihre Antwort ist technisch korrekt, aber ich denke, sie könnte von einer grammatikalischen Überprüfung / Umschreibung profitieren.
Sami Laine

das funktioniert gut danke
nwgat

4

Git-Repositorys enthalten alle Zweige (aber komprimiert und nur Unterschiede, daher selten ein Größenproblem).

Daher können Sie das gesamte Projekt so klonen, wie Sie es erfolgreich gemacht haben. Dies ist eine Standardmethode, um ein Repository zu erhalten, auch wenn Sie nur an einer Zweigstelle interessiert sind.

Die .git-Struktur enthält dann alle in diesem Repository ausgeführten Verzweigungen.

So verwenden Sie einen bestimmten Zweig: git checkout [branch_name] Wenn der Zweig vorhanden ist, werden die Dateien lokal verfügbar gemacht (genauso wie die aktuellen Dateien in den Projektverzeichnissen).

git status zeigt dann an, welcher Zweig der aktuelle ist, zum Beispiel:

Laut Leiaz kann man einen bestimmten Zweig klonen. In der Praxis habe ich das noch nie gemacht oder andere gesehen, die es benutzt haben. Weitere Untersuchungen haben ergeben, dass es relativ neu ist und in git 1.7.10 (April 2012) hinzugefügt wurde: Option 'git clone learned - single-branch', um das Klonen auf einen einzelnen Zweig zu beschränken (Überraschung!); Tags, die nicht in den Verlauf des Zweigs verweisen, werden nicht abgerufen. Beispielsweise:

git clone -b master-next --single-branch git://github.com/Xilinx/

Bildbeschreibung hier eingeben Hier checke ich für meine "Linker" -Anwendung die Filiale aus v3.0.10


1
Ich habe es auch nie getan, ich erinnerte mich, die Option gesehen zu haben. Ich denke, es wird selten verwendet, da zusätzliche Zweige "billig" sind.
Leiaz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.