Ich habe ein Git-Repository, dessen ältester Commit die Version 6.8.2 ist (es ist mit "v6.8.2" gekennzeichnet). Ich habe die Version 6.8.1 des Pakets, die ich gerne als übergeordneten Commit des ältesten Commits in das Repository übertragen möchte. Ist dies möglich? Wenn ja, wie?
Antwort
Zu viele Anzeigen?Sie könnten Ihren aktuellen Zweig auf den ältesten Commit Ihrer Wahl (v6.8.1) zurücksetzen. Dadurch wird zwar Ihre Historie umgeschrieben, aber es ist möglich.
Bearbeitet, um mehr hinzuzufügen
Angenommen, Ihr Code befindet sich auf dem Zweig master
Löschen Sie den vorhandenen Code und erstellen Sie einen neuen Zweig. Ihr alter Code ist nicht verloren - er existiert noch im Master-Zweig.
git symbolic-ref HEAD refs/heads/newbase
rm .git/index
git clean -dxf
Jetzt sind Sie auf dem Ast newbase
das ein leeres Verzeichnis ist. Fügen Sie hier die Dateien hinzu, die die neue Basis sein sollen.
<add the files to the directory>
git add .
git commit -a -m "New base commit v6.8.1"
Neu haben Sie zwei Zweige master
die Ihren ursprünglichen Code enthält und newbase
die nur Ihre neue Basis enthält.
Prüfen Sie jetzt die master
Zweig und setzen Sie ihn auf den newbase
Zweigstelle
git checkout master
git rebase newbase
Und dann müssen Sie nur noch die Konflikte beheben, und Sie haben eine neue master
Verzweigung, die mit dem früheren Zustand des Codes beginnt.
Das ist allerdings ein ziemliches Durcheinander. Wenn Sie nur den Code zum Repository hinzufügen wollen, tun Sie einfach den ersten Teil, der einen neuen Zweig erstellt. Markieren Sie ihn, so dass Sie wissen, was es ist, es besteht keine Notwendigkeit, die master
Zweig, denn wenn man an der Basis von master ankommt und weiter zurückgehen will, kann man einfach nachsehen, was in dem anderen Zweig steht.