Gibt es in git eine einfache Möglichkeit, einen nicht verwandten Zweig in ein Repository einzuführen?
Beim helfen, ein Freund mit dem git problem, heute hatte ich die Einführung eines
Zweig, gebraucht zu werden, völlig getrennt vom master
Zweig.
Die Inhalte dieser Zweig hatte wirklich einen verschiedenen Ursprung von dem, was
entwickelt worden auf der master
Zweig, aber Sie würden
eingebunden in die master
Zweig zu einem späteren Zeitpunkt.
Ich erinnerte mich, aus der Lektüre John Wiegley ist Git von unten
bis wie
die Zweige sind im wesentlichen ein label auf ein commit, der folgt einem bestimmten
Konvention und wie eine übergabe an einen Baum gebunden von Dateien und Optional
zu Eltern-commits. Wir gingen zu erstellen, eine elternlose sich verpflichten, die
vorhandene repository mit git ' s Sanitär:
Damit wir losgeworden aller Dateien im index ...
$ git rm -rf .
... extrahiert Dateien und Verzeichnisse aus einem tarball, hat diese die
index ...
$ git add .
... und erstellt ein tree-Objekt ...
$ git write-tree
(git-write-tree
erzählte uns die SHA1-Prüfsumme der erstellte Baum-Objekt.)
Dann verpflichteten Wir den Baum, ohne Angabe von Eltern-commits...
$ echo "Imported project foo" | git commit-tree $TREE
(git-commit-tree
erzählte uns die SHA1-Prüfsumme der erstellten commit-Objekt.)
... und erstellt eine neue Niederlassung, die Punkte auf unsere neu erstellte
Begehen.
$ git update-ref refs/heads/other-branch $COMMIT
Schließlich kehrten wir zu der master
Zweig, um die Arbeit dort weiter.
$ git checkout -f master
Scheint dies funktioniert zu haben wie geplant. Aber dies ist eindeutig nicht die Art
von der Vorgehensweise würde ich empfehlen Sie jemandem, der gerade erst begonnen
Verwendung von git, um es milde auszudrücken. Gibt es einen einfacheren Weg der Erstellung einer
neue Niederlassung, die ist völlig unabhängig von allem was passiert
im repository so weit?
InformationsquelleAutor der Frage hillu | 2009-09-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es ein neues feature (seit V1.7.2) was macht diese Aufgabe ein wenig mehr high-level als das, was in keine der anderen Antworten.
git checkout
unterstützt jetzt die--orphan
option. Aus der Manpage:git checkout [-q] [-f] [-m] --orphan <new_branch> [<start_point>]
Dies nicht tun genauwas der Fragesteller wollte, weil es füllt den index und die working-tree von
<start_point>
(da dies ist, nachdem alle, eine checkout-Befehl). Die einzige andere Maßnahme, die notwendig ist, entfernen Sie alle unerwünschten Elemente aus der working tree und index. Leidergit reset --hard
funktioniert nicht, abergit rm -rf .
können stattdessen verwendet werden (ich glaube, dies ist äquivalent zurm .git/index; git clean -fdx
in anderen Antworten).In der Zusammenfassung:
Verließ ich
<start_point>
nicht angegeben, da es standardmäßig auf den KOPF, und wir nicht wirklich kümmert. Diese Abfolge gilt im wesentlichen das gleiche wie der Befehl Reihenfolge, in Artem Antwortnur ohne Rückgriff auf beängstigend Sanitär-Befehle.InformationsquelleAutor der Antwort tcovo
Vom Git-Community-Buch:
InformationsquelleAutor der Antwort Artem Tikhomirov
Obwohl die Lösung mit
git symbolic-ref
und entfernen index funktioniert, könnte es sein konzeptionell sauberer zu erstellen neue repositorydann abrufen aus, es
Können Sie nun löschen /Pfad/zu/nicht verwandten
InformationsquelleAutor der Antwort Jakub Narębski
Github hat eine Funktion namens Projekt-Seitenwo Sie können erstellen eine bestimmte benannte Niederlassung in Ihrem Projekt Dateien, die serviert werden, die von Github. Ihre Anweisungen sind wie folgt:
Dort haben Sie ein leeres repository, die können Sie fügen Sie dann Ihre neuen Inhalt.
InformationsquelleAutor der Antwort Greg Hewgill
Die aktuell ausgewählte Antwort richtig ist, ich möchte nur hinzufügen, dass zufällig...
Dies ist eigentlich genau, wie github.com ermöglicht Benutzern das erstellen Github-Seiten für Ihre repos, durch eine verwaiste Zweig namens
gh-pages
.Die hübsche Schritte sind gegeben und hier erläutert:
https://help.github.com/articles/creating-project-pages-manually
Hoffe, das hilft!
InformationsquelleAutor der Antwort unknownprotocol
Manchmal will ich einfach nur zum erstellen von leeren Zweig im Projekt sofort starten Sie dann die Arbeit, ich will einfach excute folgenden Befehl ein :
InformationsquelleAutor der Antwort Andy Chen
Finden Sie dieses Skript auf http://wingolog.org/archives/2008/10/14/merging-in-unrelated-git-branches und es funktioniert sehr gut !
InformationsquelleAutor der Antwort Benoît
Wenn Sie Ihre bestehenden Inhalte wurde bereits verpflichtet, Sie jetzt (Git 2.18 Q2 2018) zu extrahieren, können Sie in Ihre eigene, neue orphan-Zweig, da die Umsetzung von "
git rebase -i --root
" wurde aktualisiert, um zu verwendender sequencer Maschinen mehr.
Der sequencer ist das man jetzt erlauben die Transplantation der gesamten Topologie der commit-graph anderswo.
Sehen commit 8fa6eeacommit 9c85a1ccommit ebddf39commit 21d0764commit d87d48bcommit ba97aea (03 Mai 2018) von Johannes Schindelin (
dscho
).(Zusammengefasst von Junio C Hamano --
gitster
-- in commit c5aa4bc30. Mai 2018)InformationsquelleAutor der Antwort VonC