Git: Zwei anfängliche Commits

Lesezeit: 2 Minuten

Ich habe ein Projekt, das vor kurzem mit der Versionskontrolle begonnen hat.
Es gibt einen älteren Versuch dieses Projekts mit völlig anderem Code, den ich der Versionskontrolle für die Nachwelt hinzufügen möchte, der aber weder ein Vorfahr noch ein Nachkomme des ursprünglichen Commit des aktuellen ist master Zweig.

Ich möchte dafür einen neuen parallelen Zweig ohne Vorgeschichte erstellen (dh mehrere “erste Commits” haben). Ist dies mit Git möglich, ohne ein zweites Repository erstellen zu müssen? Der Commit-Baum würde ungefähr so ​​​​aussehen:

o---o---o   master
     \
      o---o   branch

o   old implementation

So, dass ich einfach verwenden kann git checkout old um auf den Code zuzugreifen. Es darf vom Garbage Collector nach 90 Tagen nicht bereinigt werden und darf optional getaggt werden.

Benutzer-Avatar
Marcin Loś

git checkout hat eine Option für genau diesen Anwendungsfall: --orphan.

Aus dem Git-Handbuch:

--orphan <new_branch>

Erstellen Sie einen neuen verwaisten Zweig mit dem Namen <new_branch>begann von <start_point> und darauf umschalten. Der erste Commit, der auf diesem neuen Branch durchgeführt wird, wird keine Eltern haben und wird die Wurzel einer neuen Historie sein, die vollständig von allen anderen Branches und Commits getrennt ist.

Außerdem sagt der Mann ausdrücklich:

Wenn Sie einen getrennten Verlauf starten möchten, der eine Reihe von Pfaden aufzeichnet, die sich vollständig von denen von unterscheiden <start_point>dann sollten Sie den Index und den Arbeitsbaum direkt nach dem Erstellen des verwaisten Zweigs löschen, indem Sie “git rm -rf .” von der obersten Ebene des Arbeitsbaums.

  • Vielen Dank. Wie Sie meiner Frage vielleicht entnommen haben, dachte ich darüber nach, einen “parallelen Zweig” zu erstellen, und hatte daher alles gelesen git-branch helfen, anstatt git checkout!

    – Nikolaus Shanks

    11. September 2013 um 14:54 Uhr

  • Nun, es ist nicht so, dass Git für seine intuitive und konsistente Benutzeroberfläche bekannt ist 😉

    – Marcin Loś

    11. September 2013 um 15:02 Uhr

Abgesehen von der Verwendung der checkout --orphan -Methode können Sie auch ein separates Repository in Ihrer anderen Codebasis erstellen, das anfängliche Commit durchführen und dann in das andere Repository pushen (oder aus dem anderen Repository von diesem ziehen).

cd old-code
git init
git add .
git commit -m 'Initial commit of historical codebase'
git push ../path/to/current/code/repository master:historical

Danach können Sie das Repository wieder entfernen (rm -rf old-code/.git) wenn du es nicht brauchst (aber es sollte nicht schaden)

Sie müssen einen verwaisten Zweig erstellen:

git checkout --orphan <branch>

1131380cookie-checkGit: Zwei anfängliche Commits

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy