So führen Sie den aktuellen Zweig in einem anderen Zweig zusammen, ohne den anderen Zweig auszuchecken:
Schnellvorlauf-Zusammenführung
Das ist wirklich einfach. Per Definition bedeutet eine Schnellvorlauf-Zusammenführung einfach, dass der Verzweigungszeiger im Festschreibungsbaum nach vorne verschoben wird. Sie müssen also nur Folgendes simulieren :
git branch -f master dev
Vorsichtsmaßnahmen: Dies setzt voraus, dass masterauf ein Commit verwiesen wird , das sich ebenfalls in einem devZweig oder einem anderen Zweig befindet. Wenn nicht, riskieren Sie, Arbeit zu verlieren! Im Gegensatz git mergedazu, bei dem ein Zusammenführungs-Commit (oder eine Beschwerde) erstellt wird, wenn ein schneller Vorlauf nicht möglich ist, zwingt diese Methode den Verzweigungszeiger stillschweigend , auf ein anderes Commit zu zeigen.
Dies setzt auch voraus, dass Sie der einzige sind, der am Repo arbeitet, und / oder Sie wissen, was Sie tun.
Tipp: Wenn Sie a ausgeführt haben git fetchund neue Commits eingegeben haben origin/master, können Sie den masterZweig verschieben, ohne ihn auschecken zu müssen.
git branch -f master origin/master
Zusammenführen über Merge Commit
Dies ist nicht immer möglich. Um ein Zusammenführungs-Commit zu erstellen, müssen Sie einen Zusammenführungsvorgang ausführen. Um einen Zusammenführungsvorgang durchzuführen, sollten Sie Commits in der anderen Verzweigung haben, die sich nicht in der aktuellen Verzweigung befinden.
Wenn Sie Commits in der masterFiliale haben, die sich nicht in der devFiliale befinden, können Sie:
Haftungsausschluss: Dies ist lediglich ein Proof-of-Concept, um zu zeigen, dass es manchmal möglich ist, eine Zusammenführung mit dem anderen Zweig durchzuführen, ohne ihn auszuchecken. Wenn Sie es jeden Tag verwenden möchten, möchten Sie wahrscheinlich mithilfe der Shell-Umleitung einen Alias dafür erstellen oder ein Shell-Skript dafür erstellen. Andererseits können Sie auch ein Shell-Skript für den in der Frage gezeigten kürzeren Prozess erstellen.
git checkout -b temp
git merge --no-ff -e master
git branch -f master temp
git checkout dev
git branch -D temp
Erläuterung:
- Überprüfen Sie einen temporären Zweig, der auf dasselbe Commit wie der aktuelle Zweig verweist.
masterIn den temporären Zweig einbinden und Commit-Nachrichteneditor starten. Wenn das Zusammenführungs-Commit so aussehen soll, als hätten Sie den devZweig zusammengeführt master, bearbeiten Sie es folgendermaßen:
Merge branch 'master' into temp
dazu:
Merge branch 'dev'
Tipp: Sie können verwenden, -m "Merge branch 'dev'"anstatt -eschneller zu sein.
- Aktualisieren Sie den
masterVerzweigungszeiger so, dass er auf das Zusammenführungs-Commit verweist.
- Schauen Sie sich die
devFiliale an.
- Erzwingen Sie das Löschen des temporären Zweigs.
Dies berührt immer noch Ihren Arbeitsbaum, aber nur minimal. Der Baum wird nicht bis zum ursprünglichen Zustand zurückgesetzt, masternur um die Entwicklungsänderungen erneut einzuführen. Einige mögen sich nicht darum kümmern, aber für andere mag es wichtig sein.