Betrachten Sie die folgenden Schritte aus:Klärung git zurückkehren und rebase
git init
touch foo.txt
git add .
git commit -m 'initial commit'
Nun werden wir einen neuen Zweig erstellen und eine Datei namens foo2.txt hinzufügen:
git checkout -b new_branch
touch foo2.txt
git add .
git commit -m 'added foo2.txt'
Jetzt werden wir Gehen Sie zurück zum Master-Zweig und setzen Sie den 'initialen Commit' zurück, den wir gemacht haben (Hinweis: Sie können den Commit-Hash 'initial commit' mit dem Befehl git log herausfinden).
git checkout master
git revert <commit hash of initial commit>
An diesem Punkt haben wir weder foo.txt noch foo2.txt in dem Master-Zweig. Nun lassen Sie uns verschmelzen new_branch
git merge new_branch
An diesem Punkt zu meistern, wird foo2.txt jetzt verschmolzen in Meister, aber foo.txt ist nicht da.
Die Frage ist also, wie bekomme ich foo.txt zurück zum Master? Ich habe versucht, dies zu tun:
git rebase new_branch
Aber das bringt es nicht zurück. Wenn wir also ein Commit auf Master zurücksetzen, müssen wir einen anderen Zweig zurück zum Master zusammenführen, wie würden wir es zwingen, irgendwelche "fehlenden" Dateien (foo.txt in diesem Beispiel) zu übernehmen?
Die einzige Problemumgehung, die ich fand, die ziemlich drastisch war, war Master zu löschen und new_branch zum Master umzubenennen.
Kannst du erklären, wie man diesen Schritt macht: "also musst du den Master auf diesen neuen HEAD zurücksetzen", vielleicht mit einem Beispiel? – dcp
@dcp 'git Verzweigung -D Master; git Branch Master' oder schreibe aktuelle HEAD's sha1 und' git checkout master; git reset --hard'. –
ElpieKay
Vielen Dank für die hilfreichen Informationen und zeigen verschiedene Möglichkeiten, diese Dinge in git zu tun, wirklich gute Antwort. – dcp