it-swarm.com.de

Wie kann ich einen einzelnen Zweig in Git klonen?

Ich habe ein lokales Git-Repository mit dem Namen 'Skeleton', das ich zum Speichern von Projektskeletten verwende. Es gibt einige Niederlassungen für verschiedene Arten von Projekten:

[email protected] [~/Projects/skeleton] git branch
* master
  Rails
  c
  c++

Wenn ich den Stammzweig nach einem neuen Projekt überprüfen möchte, kann ich das tun

[email protected] [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/

und alles ist so, wie ich es will. Der neue Masterzweig verweist insbesondere auf den Skelettmasterzweig, und ich kann Push and Pull verwenden, um Änderungen an den grundlegenden Projekteinstellungen vorzunehmen.

Was nicht funktioniert, ist jedoch, wenn ich einen anderen Zweig klonen möchte. Ich kann es nicht so erfassen, dass ich nur den gewünschten Zweig ziehe, zum Beispiel den Zweig Rails, und dann hat das neue Repository einen Zweig master, der standardmäßig auf den Zweig Rails des Skelett-Repositorys pusht und daraus abruft.

Gibt es einen guten Weg, dies zu tun? Oder, vielleicht möchte Git nicht, dass ich die Dinge strukturiere, und ich bin offen dafür. Vielleicht sollte ich mehrere Repositories haben, wobei das Skelett-Repository von Ruby on Rails das Master-Skelett-Repository verfolgt? Und für jedes einzelne Projekt das Klon-Repository von Ruby on Rails klonen.

660
Casey Rodarmor

Hinweis: Mit dem git1.7.10 (April 2012)} können Sie nur einen Zweig klonen

# clone only the remote primary HEAD (default: Origin/master)
git clone --single-branch

as in:
git clone <url> --branch <branch> --single-branch [<folder>]

Sie können es in t5500-fetch-pack.sh sehen:

test_expect_success 'single branch clone' '
  git clone --single-branch "file://$(pwd)/." singlebranch
'

TobuKommentare dass:

Dies ist implizit, wenn ein flacher Klon ausgeführt wird.
Dies macht git clone --depth 1 die einfachste Möglichkeit, Bandbreite zu sparen.

Und seit Git 1.9.0 (Februar 2014) unterstützen flache Klone die Datenübertragung (Push/Pull), sodass diese Option jetzt noch nützlicher ist.
Sehen Sie mehr unter " Ist git clone --depth 1 (shallow clone) nützlicher als er ausdrückt? ".


"Rückgängig machen" eines flachen Klons wird detailliert beschrieben unter " Konvertieren Sie flachen Klon in vollständigen Klon " (git 1.8.3+)

# unshallow the current branch
git fetch --unshallow

# for getting back all the branches (see Peter Cordes' comment)
git config remote.Origin.fetch refs/heads/*:refs/remotes/Origin/*
git fetch --unshallow

Als Chris Kommentare:

die magische Linie für das Umkehren fehlender Äste --single-branch lautet (git v2.1.4):

git config remote.Origin.fetch +refs/heads/*:refs/remotes/Origin/*
git fetch --unshallow  
700
VonC

Eine Möglichkeit besteht darin, das Folgende auszuführen.

git clone [email protected]:project_name.git -b branch_name /your/folder

Dabei ist branch_name der Zweig Ihrer Wahl und "/ Ihr/Ordner" der Zielordner für diesen Zweig. Es ist wahr, dass dies andere Zweige mit sich bringen wird, die Ihnen die Möglichkeit geben, hin und her zu verschmelzen. Jetzt können Sie mit Git 1.7.10 beginnen

git clone [email protected]:project_name.git -b branch_name --single-branch /your/folder
648
Alex Nolasco

Mit Git Version 1.7.3.1 (unter Windows) mache ich Folgendes ($BRANCH ist der Name des Zweigs, den ich auschecken möchte, und $REMOTE_REPO ist die URL des entfernten Repositorys, aus dem ich klonen möchte):

mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f Origin $REMOTE_REPO
git checkout $BRANCH

Der Vorteil dieses Ansatzes besteht darin, dass nachfolgende git pull (oder git fetch) -Aufrufe auch nur den angeforderten Zweig herunterladen.

105
Frerich Raabe

Sie können den langatmigen Weg versuchen:

mkdir newrepo.git
cd newrepo.git
git init
git remote add Origin file:///path/to/original
git fetch Origin branchiwant:refs/remotes/Origin/branchiwant
git checkout -b branchiwant --track Origin/branchiwant

Was das macht, ist:

  • Erstellen und initiieren Sie ein leeres Git-Repository.
  • Fügt das ursprüngliche Repository als Remote mit dem Namen Origin hinzu.
  • Ruft nur den Zweig ab, den Sie von der entfernten Station Origin benötigen.
  • Erstellt und überprüft einen neuen Zweig, der so eingerichtet ist, dass er den geklonten Quellzweig verfolgt.

Hoffentlich ist das so, wie Sie es sich wünschen.

26
jkp

Sie können dies mit dem folgenden Befehl tun:

git clone -b branch_name --single-branch project_url local_folder_to_clone_in
18
nosaiba darwish

From Git-Clone-Manpage :

--single-branch ist dein Freund während des Klonens. Vergiss nicht, es mit --branch <branch name> zu verwenden, oder es wird nur das entfernte primäre HEAD geklont (standardmäßig master)

Denken Sie immer daran Ctrl + F5 um frischen Quellcode zu lesen, nicht den aus dem Cache :-) (Ich wusste nicht so lange über diese Option Bescheid.)

15
Casey
git clone <url> --branch <branch> --single-branch

Geben Sie einfach die URL und den Namen der Filiale ein.

7
jsroyal

Verwenden Sie den folgenden Befehl, um einen Git-Zweig zu klonen, für den Sie keinen öffentlichen Schlüssel haben:

git clone -b <branch> <Git repository URL or clone URL you get from Git repository>
2
Prem S

Klonen Sie nur einen Zweig. Dies ist der einfachste Weg:

$ git clone -b BRANCH_NAME --single-branch [email protected]:___/PROJECTNAME.git
2
Cubiczx

Öffnen Sie die Cmd.

cd folder_name (geben Sie den Pfad ein, an dem der Zweig geklont werden soll)

Nur ein Befehl:

git clone url_of_projecturltoclone -b branch_name
1
dhS

Kann in 2 Schritten erfolgen

  1. Klonen Sie das Repository

    • git clone <http url>
  2. Überprüfen Sie die gewünschte Filiale

    • git checkout $BranchName
1
Pramod Setlur

Ein bisschen zu spät, aber ich wollte die Lösung hinzufügen, die ich zur Lösung dieses Problems verwendet habe. Ich habe die Lösung gefunden hier .

Wie auch immer, die Frage scheint zu lauten: Wie starte ich ein neues Projekt aus einer Filiale eines anderen Repos?

Die Lösung wäre, zuerst ein neues Repo in Github oder wo auch immer zu erstellen. Dies dient als Repo für Ihr neues Projekt.

Navigieren Sie auf Ihrem lokalen Computer zu dem Projekt mit dem Zweig, den Sie als Vorlage für Ihr neues Projekt verwenden möchten.

Führen Sie den Befehl aus:

git Push https://github.com/accountname/new-repo.git +old_branch:master

Dies wird dazu führen, dass die old_branch auf new-repo verschoben und zum Master-Zweig der neuen repo gemacht wird.

Sie müssen dann nur das neue Repo in das lokale Verzeichnis Ihres neuen Projekts klonen und haben ein neues Projekt in der alten Filiale gestartet.

1

Nehmen wir das Beispiel von flask repo. Es hat 3 Filialen zusätzlich zum Master. Lassen Sie uns den Remote-Zweig 1.1.x auschecken

klonen Sie das Git Repo

git clone https://github.com/pallets/flask

cD in das Repo.

cd flask

fetch remote branch 1.1.x

git fetch Origin 1.1.x

kasse der Filiale

git checkout 1.1.x

Sie wechseln zum Zweig 1.1.x und verfolgen den entfernten Zweig 1.1.x.

0

Für das Klonen eines bestimmten Zweigs können Sie Folgendes tun:

git clone --branch yourBranchName [email protected]

0
nPcomp