Die --depth 1
Option in git clone
:
Erstellen Sie einen flachen Klon mit einem Verlauf, der auf die angegebene Anzahl von Revisionen gekürzt wurde. Ein flaches Repository weist eine Reihe von Einschränkungen auf (Sie können es nicht klonen oder abrufen oder von dort hineinschieben oder hineinschieben), ist jedoch ausreichend, wenn Sie nur an der jüngsten Geschichte eines großen Projekts mit einer langen Geschichte interessiert sind und dies möchten Fixes als Patches einsenden.
Aber ich habe erfolgreich einen flachen Klon erstellt, einige Änderungen vorgenommen und diese Änderungen auf den Ursprung (nackter Klon) zurückgeschoben.
Es macht Sinn für mich - ich meine, warum nicht? Wenn der geklonte KOPF im Ursprung erkennbar ist und mein Commit dazu kommt, scheint es keinen Grund zu geben. Aber das Handbuch sagt etwas anderes.
Ich mag die Idee eines flachen Klons - z. B. eines Drupal-Kerns: Ich muss auf keinen Fall wissen, was in Drupal 4 passiert ist, als ich mit 7 angefangen habe -, aber ich möchte mich nicht in den Fuß schießen.
Ist es also sicher, flache Klone zu erstellen, Commits darin zu entwickeln und erneut zu ziehen, um mit den Aktualisierungen vom Ursprung Schritt zu halten?
quelle
--orphan
Konzept scheint ähnlich und ich habe vor, ein Stück zu spielen. Immer noch etwas verunsichert, dass die Dokumente nicht der Realität entsprechen [denn wer soll sagen, dass die Dokumente--orphan
korrekt sindAntworten:
Man beachte , dass Git 1.9 / 2.0 (Q1 2014) wird entfernt diese Einschränkung.
Siehe Commit 82fba2b von Nguyễn Thái Ngọc Duy (
pclouds
) :Die Dokumentation lautet nun :
Dies ergibt sich aus Commits wie 0d7d285 , f2c681c und c29a7b8, die Klone, Sende- / Empfangspakete mit / von flachen Klonen unterstützen.
smart-http unterstützt jetzt auch das flache Abrufen / Klonen .
Alle Details finden Sie unter "
shallow.c
: Die 8 Schritte zum Auswählen neuer Commits für.git/shallow
".Update Juni 2015: Git 2.5 ermöglicht sogar das Abrufen eines einzelnen Commits !
(Ultimativer flacher Fall)
Update Januar 2016: Git 2.8 (Mach 2016) dokumentiert nun offiziell die Praxis, eine minimale Historie zu erhalten.
Siehe Commit 99487cf , Commit 9cfde9e (30. Dezember 2015), Commit 9cfde9e (30. Dezember 2015), Commit bac5874 (29. Dezember 2015) und Commit 1de2e44 (28. Dezember 2015) von Stephen P. Smith (``) .
(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 7e3e80a , 20. Januar 2016)Das ist "
Documentation/user-manual.txt
"Update 2020:
git fetch --shallow-exclude=
, das Abrufen des gesamten Verlaufs zu verhinderngit fetch --shallow-since=
, das Abrufen alter Commits zu verhindern.Weitere Informationen zum Aktualisierungsprozess für flache Klone finden Sie unter " So aktualisieren Sie einen flachen Git-Klon? ".
Wie von Richard Michael kommentiert :
Und Olle Härstedt fügt in den Kommentaren hinzu :
quelle
Sehen Sie sich einige der Antworten auf meine ähnliche Frage an, warum ich nicht aus einem flachen Klon schieben kann, und den Link zum letzten Thread auf der Git-Liste.
Letztendlich ist die Tiefenmessung zwischen Repos nicht konsistent, da sie von ihren einzelnen Köpfen aus messen und nicht (a) Ihren Kopf oder (b) die Commits, die Sie geklont / abgerufen haben, oder (c) etwas anderes du hattest im Sinn.
Das Schwierige ist, den Anwendungsfall richtig zu machen (dh selbstkonsistent), damit verteilte und daher wahrscheinlich divergierende Repos weiterhin gut zusammenarbeiten.
Es sieht so aus,
checkout --orphan
als wäre dies die richtige Einrichtungsphase, aber es fehlt immer noch eine saubere (dh ein einfacher verständlicher einzeiliger Befehl) Anleitung für den Schritt "Klonen". Es sieht eher so aus,init
als müssten Sie ein Repo durchführen, einenremote
Tracking-Zweig einrichten (Sie möchten nur den einen Zweig?) Und dannfetch
diesen einzelnen Zweig, der sich langatmig anfühlt und mehr Möglichkeiten für Fehler bietet.Bearbeiten: Für den Schritt 'Klonen' siehe diese Antwort
quelle