4 Stimmen

Wie kann ich in Git einen Commit erstellen, der vor dem ältesten Commit liegt?

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?

4voto

Abizern Punkte 137651

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X