Während ich heute einem Freund mit einem git-Problem geholfen habe, musste ich einen -Zweig einführen, der komplett vom Zweig master
getrennt sein musste. Der Inhalt dieses Zweiges hatte tatsächlich einen anderen Ursprung als wurde auf dem Zweig master
entwickelt, aber sie wurden zu einem späteren Zeitpunkt in den Zweig master
zusammengeführt werden.Gibt es in git eine einfache Möglichkeit, einen nicht verwandten Zweig in ein Repository einzuführen?
ich John Wiegley der Erinnerung aus der Lektüre Git from the bottom up wie Zweige sind im Wesentlichen ein Etikett zu einem Commit, dass eine bestimmte wird folgt Konvention und wie ein Commit an einen Baum von Dateien gebunden und optional Mutter verpflichtet. Wir gingen ein elternlos zu schaffen, um die vorhandenen Repository git des Sanitär-commit:
Also haben wir alle Dateien im Index befreien ...
$ git rm -rf .
... extrahierten Verzeichnisse und Dateien von einem Tarball , hinzugefügt, um den Index diejenigen ...
$ git add .
... und ein Baumobjekt erstellt ...
$ git write-tree
(git-write-tree
sagte uns der sha1sum des Baumes Objekt erstellt.)
Dann wir den Baum verpflichtet, ohne Angabe von Eltern verpflichtet ...
$ echo "Imported project foo" | git commit-tree $TREE
(git-commit-tree
uns gesagt, die sha1sum der erstellten Commit-Objekt.)
... und einen neuen Zweig erstellt, der auf unser neu erstelltes commit verweist.
$ git update-ref refs/heads/other-branch $COMMIT
Endlich sind wir zum Zweig master
zurückgekehrt, um dort weiter zu arbeiten.
$ git checkout -f master
Dies scheint wie geplant gearbeitet zu haben. Aber das ist eindeutig nicht die Art der Prozedur, die ich jemandem empfehlen würde, der nur mit Git beginnt, um es milde auszudrücken. Gibt es eine einfachere Möglichkeit, einen neuen Zweig zu erstellen, der völlig unabhängig von allem ist, was im Repository bisher passiert ist?
Hinweis: Diese Funktion wurde in git 1.7.2 hinzugefügt. – Matthew
Wissen Sie, ob es möglich ist, einen verwaisten Zweig zu erstellen, der sichtbar bleibt, wenn Sie einen Zweig aus dem anderen "Baum" auschecken? – JJD
@JJD: Ich denke, was Sie wollen, ist Git fusionieren. '(git checkmaster && git merge --no-commit" Orphan-branch ")' Einige ähnliche Tricks funktionieren mit git-reset oder spielen mit dem Index. Aber es hängt von Ihrem gewünschten Workflow ab. – phord