Als ich heute einem Freund bei einem Git-Problem half, musste ich eine Zweig einführen, der völlig getrennt von der master
Zweigstelle. Der Inhalt dieser Verzweigung hatte tatsächlich einen anderen Ursprung als das, was entwickelt worden war. master
Zweig, aber sie sollten in den master
Zweigstelle zu einem späteren Zeitpunkt.
Ich erinnerte mich nach der Lektüre von John Wiegleys Git von unten oben wie Zweige sind im Wesentlichen ein Etikett für eine Übergabe, die einer bestimmten Konvention folgt und wie ein Commit mit einem Baum von Dateien und optional zu übergeordneten Commits. Wir haben einen elternlosen Commit zum bestehenden Repository mit Hilfe von Git zu erstellen:
Wir sind also alle Dateien im Index losgeworden ...
$ git rm -rf .
... extrahierte Verzeichnisse und Dateien aus einem Tarball und fügte diese dem Index hinzugefügt ...
$ git add .
... und ein Baumobjekt erstellt ...
$ git write-tree
( git-write-tree
hat uns die sha1sum des erstellten Baumobjekts mitgeteilt).
Dann haben wir den Baum committed, ohne die übergeordneten Commits anzugeben...
$ echo "Imported project foo" | git commit-tree $TREE
( git-commit-tree
die Sha1-Summe des erstellten Commit-Objekts).
... und einen neuen Zweig erstellt, der auf unsere neu erstellte Übergabe verweist.
$ git update-ref refs/heads/other-branch $COMMIT
Schließlich kehrten wir zum master
Zweigstelle, um die Arbeit dort fortzusetzen.
$ git checkout -f master
Dies scheint wie geplant funktioniert zu haben. Aber das ist eindeutig nicht die Art von Verfahren, das ich jemandem empfehlen würde, der gerade erst anfängt Git zu verwenden, um es milde auszudrücken. Gibt es einen einfacheren Weg zur Erstellung einer neuen Zweig zu erstellen, der nichts mit dem zu tun hat, was bisher bisher im Projektarchiv passiert ist?