Ich habe ein lokales Git-Repository namens "Skeleton", das ich zum Speichern von Projektskeletten verwende. Es gibt einige Niederlassungen für verschiedene Arten von Projekten:
casey@agave [~/Projects/skeleton] git branch
* master
rails
c
c++
Wenn ich den Hauptzweig nach einem neuen Projekt durchsuchen möchte, kann ich dies tun
casey@agave [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/
und alles ist so wie ich es will. Insbesondere zeigt der neue Hauptzweig auf den Hauptzweig des Skeletts, und ich kann drücken und ziehen, um Änderungen am grundlegenden Projekt-Setup zu verschieben.
Was jedoch nicht funktioniert, ist, wenn ich einen anderen Zweig klonen möchte. Ich kann es nicht bekommen, so dass ich nur den gewünschten Zweig ziehe, zum Beispiel den rails
Zweig, und dann hat das neue Repository einen Zweig, der standardmäßig master
zum rails
Zweig des Skelett-Repositorys pusht und von diesem zieht .
Gibt es einen guten Weg, dies zu tun? Oder vielleicht möchte Git nicht, dass ich die Dinge so strukturiere, und dafür bin ich auf jeden Fall offen. Vielleicht sollte ich mehrere Repositorys haben, wobei das Ruby on Rails-Skelett-Repository das Master-Skelett-Repository verfolgt? Und jedes einzelne Projekt, das das Ruby on Rails-Skelett-Repository klont.
git branch -a
zeigt?git checkout -b newbranch origin/branchiwant
besser funktionieren? (ohne die--track
Option)Antworten:
Hinweis: Mit git1.7.10 (April 2012) können Sie tatsächlich nur einen Zweig klonen :
Sie können es sehen in
t5500-fetch-pack.sh
:Tobu kommentiert :
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.
Weitere Informationen finden Sie unter " Ist
git clone --depth 1
(flacher Klon) nützlicher als es sich herausstellt? ".Das "Rückgängigmachen" eines flachen Klons wird unter " Konvertieren eines flachen Klons in einen vollständigen Klon " (git 1.8.3+) beschrieben.
Wie Chris kommentiert:
Mit Git 2.26 (Q1 2020) verwendet "
git clone --recurse-submodules --single-branch
" jetzt beim Klonen der Submodule dieselbe Option für einzelne Zweige .Siehe Commit 132f600 , Commit 4731957 (21. Februar 2020) von Emily Shaffer (
nasamuffin
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit b22db26 , 05. März 2020)quelle
git clone <url> --branch <branch> --single-branch <folder>
klappt wunderbar.clone --depth 1
der einfachste Weg, um Bandbreite zu sparen.--depth 1
sind für den Benutzer unsicher, da sie möglicherweise mit dem neuen Klon tatsächlich drücken / ziehen möchten.--single-branch
lautet die magische Linie, um fehlende Zweige umzukehren,git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
undgit fetch --unshallow
(git v2.1.4)Eine Möglichkeit besteht darin, Folgendes auszuführen.
Wo
branch_name
ist der Zweig Ihrer Wahl und "/ your / folder" ist der Zielordner für diesen Zweig. Es ist wahr, dass dies andere Zweige bringt, die Ihnen die Möglichkeit geben, hin und her zu verschmelzen.Aktualisieren
Ab Git 1.7.10 können Sie dies jetzt tun
quelle
--single-branch
, um nur den diesem Zweig zugeordneten Verlauf anstelle aller im Repository enthaltenen Verlaufsdaten und Tags abzurufen.Unter Verwendung von 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
die URL des Remote-Repositorys, von dem ich klonen möchte):Der Vorteil dieses Ansatzes besteht darin, dass nachfolgende
git pull
(odergit fetch
) Aufrufe auch nur den angeforderten Zweig herunterladen.quelle
git clone -b $BRANCH $REMOTE_REPO $BRANCH
afik sie sind die gleichen?git clone -b
Sie alle Remote-Refs (alle Remote-Zweige und -Tags) wiegit branch -a
gezeigt erhalten. Mit meinem Skript erhalten Sie nur eine einzige Referenz.-t $BRANCH
auch ohne funktioniert-f
, was sofort abrufen würde. Danngit fetch origin
würde abrufen undgit checkout $BRANCH
würde die lokale Niederlassung und Kasse einrichten. Dies ist nützlich, wenn Sie die Fernbedienung vor dem Abrufen konfigurieren müssen, zgit config remote.origin.uploadpack=/bin/upload-pack
.branch -a
zeigteorigin/$BRANCH
. Dies wurdegit checkout origin/$BRANCH
behoben.Sie können den langatmigen Weg versuchen:
Was dies tut ist:
Hoffentlich ist das so etwas wie das, wonach Sie suchen.
quelle
git branch -r
?git branch -r
gibt eigentlich keine Ausgabe.Sie können dies mit dem folgenden Befehl tun:
quelle
Von der git-clone-Manpage :
--single-branch
Ist Ihr Freund während des Klonens daran denken, mit zu verwenden,--branch <branch name>
oder wird nur der primäre Remote-HEAD geklont (standardmäßig Master)?Denken Sie immer daran, Ctrl+ zu tun F5, um eine neue Quelle zu lesen, nicht die aus dem Cache :-) (Ich wusste lange Zeit nichts über diese Option.)
quelle
Geben Sie einfach die URL und den Filialnamen ein.
quelle
Klonen Sie nur einen Zweig. Dies ist der einfachste Weg:
quelle
Zum Klonen eines bestimmten Zweigs haben Sie folgende Möglichkeiten:
git clone --branch yourBranchName [email protected]
quelle
Verwenden Sie Folgendes, um einen Zweig von Git zu klonen, für den Sie nicht über den öffentlichen Schlüssel verfügen:
quelle
Öffnen Sie das cmd.
cd folder_name
(Geben Sie den Pfad ein, in den der Zweig geklont werden soll.)Nur ein Befehl:
quelle
Ein bisschen spät, aber ich wollte die Lösung hinzufügen, mit der ich dieses Problem gelöst habe. Ich habe hier die Lösung gefunden .
Wie auch immer, die Frage scheint zu lauten: Wie kann man ein neues Projekt von einem Zweig eines anderen Repos aus starten?
Die Lösung dafür war, 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 folgenden Befehl aus:
Dadurch wird die old_branch auf new-repo verschoben und zum Hauptzweig des neuen Repos gemacht.
Sie müssen dann nur das neue Repo in das lokale Verzeichnis Ihres neuen Projekts klonen und haben ein neues Projekt in der alten Niederlassung gestartet.
quelle
Nehmen wir das Beispiel eines Kolben-Repo. Es hat 3 Zweige zusätzlich zum Master. Lassen Sie uns den Remote-Zweig 1.1.x überprüfen
Klonen Sie das Git Repo
CD ins Repo.
Remote-Zweig abrufen 1.1.x.
Kasse der Filiale
Sie wechseln zum Zweig 1.1.x und verfolgen den Remote-Zweig 1.1.x.
quelle
Ähnlich wie @ nosaiba-darwish hier sagte: hier
Das machen wir normalerweise in unserem Unternehmen:
git clone -b <name_of_branch> --single-branch <git_url> folder_to_clone_locally
quelle
Wenn Sie einen flachen Klon möchten, können Sie dies tun mit:
--depth=1
impliziert--single-branch
.quelle
Hierfür gibt es hauptsächlich 2 Lösungen:
git clone -b <BRANCH_NAME> <GIT_REMOTE_URL>
Beispiel: Git-Klon -b tahir https://github.com/Repository/Project.git
Der folgende Befehl klont den Zweig tahir aus dem Git-Repository. Der obige Befehl klont nur den spezifischen Zweig, ruft jedoch die Details anderer Zweige ab. Sie können alle Verzweigungsdetails mit dem Befehl anzeigen.
git branch -a
git clone -b <BRANCH_NAME> --single-branch <GIT_REMOTE_URL>
Beispiel: Git-Klon -b tahir --single-branch https://github.com/Repository/Project.git
Nun, wenn Sie eine tun
git branch -a
, wird nur Ihr aktueller einzelner Zweig angezeigt, den Sie geklont haben, und nicht alle Zweige. Es hängt also von Ihnen ab, wie Sie es möchten.Hoffe es hilft irgendwann jemandem !! ...
quelle
Mit diesem Befehl können Sie einen einzelnen Zweig gitieren und den Ordner umbenennen, wenn Sie den Zweig eigenständig lassen möchten
Beispiel
quelle
git clone --branch {branch-name} {repo-URI}
Beispiel:
git clone --branch dev https://github.com/ann/cleaningmachine.git
{branch-name}
{repo-URI}
quelle
Kann in 2 Schritten durchgeführt werden
Klonen Sie das Repository
git clone <http url>
Kasse der gewünschten Filiale
git checkout $BranchName
quelle