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 master
auf ein Commit verwiesen wird , das sich ebenfalls in einem dev
Zweig oder einem anderen Zweig befindet. Wenn nicht, riskieren Sie, Arbeit zu verlieren! Im Gegensatz git merge
dazu, 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 fetch
und neue Commits eingegeben haben origin/master
, können Sie den master
Zweig 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 master
Filiale haben, die sich nicht in der dev
Filiale 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.
master
In den temporären Zweig einbinden und Commit-Nachrichteneditor starten. Wenn das Zusammenführungs-Commit so aussehen soll, als hätten Sie den dev
Zweig 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 -e
schneller zu sein.
- Aktualisieren Sie den
master
Verzweigungszeiger so, dass er auf das Zusammenführungs-Commit verweist.
- Schauen Sie sich die
dev
Filiale 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, master
nur um die Entwicklungsänderungen erneut einzuführen. Einige mögen sich nicht darum kümmern, aber für andere mag es wichtig sein.