Git ist ein verteiltes Versionskontrollsystem - ein Werkzeug zum Nachverfolgen von Änderungen, die an einer Gruppe von Dateien vorgenommen wurden, oder zur zeitlichen Koordinierung der Arbeit. Es wird häufig von Programmierern verwendet, um Änderungen am Software-Quellcode und am besten zu koordinieren. es kann verwendet werden, um jegliche Art von Inhalten überhaupt zu verfolgen. Es wurde speziell entwickelt, um alles von kleinen bis zu großen Projekten mit höchster Geschwindigkeit und Effizienz abzuwickeln. Es ist äußerst flexibel, dh Einzelpersonen können ihre Arbeit direkt zwischen ihren persönlichen Repositories teilen und Gruppen können ihren Arbeitsablauf durch ein zentrales Repository koordinieren. Es ermöglicht einfach zwei Entwicklern, die an zwei verschiedenen Standorten sitzen, Änderungen unabhängig voneinander vorzunehmen und aufzuzeichnen, und dies alles ohne ein zentrales Repository.
Das Zusammenführen ist eine gängige Praxis in Git, um Änderungen von einem Zweig in einen anderen zu integrieren. Git merge ist ein Befehl, der Änderungen an einem anderen Ort festlegt. Entwickler können damit ihre unabhängigen, vom Git-Zweig erstellten Codezeilen in einen einzigen Zweig integrieren. Dies ändert nur den Zielzweig, während der Verlauf des Quellzweigs erhalten bleibt. Git rebase ist ein weiterer Befehl, der grundsätzlich zu dem gleichen Zweck verwendet wird, es ist jedoch ganz anders. Beide machen dasselbe - integrieren Commits von einem Zweig in einen anderen - aber der Unterschied liegt in der Art und Weise, wie sie es tun. Wir heben einige wichtige Unterscheidungspunkte hervor, die die beiden vergleichen.
Git merge ist ein Befehl, der zwei oder mehr Commit-Historienzweige vereint. Beim Zusammenführen werden oft nur zwei Zweige vereint, obwohl Git das Zusammenführen von drei, vier oder mehr Zweigen gleichzeitig unterstützt. Git Merge wird von Git Pull verwendet, um Änderungen von einem Zweig in einen anderen oder von einem anderen Repository aus zu übernehmen. Das Zusammenführen muss in einem einzigen Repository erfolgen, dh alle Zweige, die zusammengeführt werden müssen, sollten im selben Repository vorhanden sein. Zusammenführungssituationen resultieren in der Regel aus zwei oder mehr Benutzern, die versuchen, allgemeinen Code zu aktualisieren. In der Regel führt ein Benutzer einen Zweig mit einem anderen Zweig in seinem lokalen Repository in einer lokalen Umgebung zusammen. Git Merge integriert speziell den Inhalt eines Quellzweigs mit einem Zielzweig. Der Zielzweig wird geändert, während der Quellzweig erhalten bleibt.
Git Rebase ist eine weitere Alternative zum Zusammenführen, die zur Integration eines anderen Zweigs mit dem Zweig verwendet wird, in dem Sie gerade arbeiten, es sei denn, es wird ein linearer Commit-Verlauf geführt. Der Zweck von Git Rebase ist es, einen Zweig von einem Ort zu einem anderen zu verschieben. Da Commits unveränderlich sind, können sie nicht verschoben werden. Daher müssen Commits mit denselben Changesets und Metadaten erstellt werden. Eine Rebase ändert grundlegend die Vorstellung, wann und wo eine Folge von Commits entwickelt wurde, was dazu führt, dass einige Aspekte der Entwicklungsgeschichte verloren gehen. Dies bedeutet, dass das ursprüngliche Commit, auf dem die Entwicklung ursprünglich basiert, geändert wird. Es bindet effektiv alle neuen Commits im Master-Zweig ein, indem die Historie neu geschrieben wird. Als Ergebnis werden neue Commits für jedes Commit in der ursprünglichen Zweigstelle erstellt.
- Obwohl Merge und Rebase die gebräuchlichsten Methoden zur Integration von Änderungen in Git sind, dienen sie demselben Zweck, mehrere Zweige in einem zu kombinieren, der Unterschied liegt jedoch darin, wie sie dies erreichen. Git merge integriert den Inhalt eines Quellzweigs mit einem Zielzweig, wobei die Vorfahren jedes Commit-Verlaufs beibehalten werden, wohingegen Git Rebase alle neuen Commits im Master-Zweig integriert, indem der Verlauf neu geschrieben wird, indem für jeden Commit im Quellzweig neue Commits erstellt werden.
- Beim Git-Zusammenführen wechseln Sie zuerst zu dem Zweig, der zusammengeführt werden soll, und wählen dann mit dem Befehl "Zusammenführen" einen Zweig aus, in dem die Zusammenführung erfolgen soll. Da ein Zweig auf ein Commit verweist und ein Commit die Granularität ist, die Sie mit dem Zusammenführen verknüpfen Befehlszusammenführung auf Zweig- oder Festschreibebene. Rebase hingegen ist etwas anders. Zuerst wählen Sie einen Zweig aus, der zurückgebaut werden soll, und wählen Sie dann mit dem Befehl "rebase" aus, wo er platziert werden soll.
- Beim Zusammenführen wird ein neues Commit erstellt, das die Zusammenführung zwischen zwei Zweigen darstellt. Es integriert Änderungen aus verschiedenen parallelen Entwicklungslinien (Zweigen) zusammen, indem ein Zusammenführungs-Commit erstellt wird. Der Zweck besteht darin, zwei oder mehr Zweige zusammenzufügen, einschließlich aller Änderungen seit dem Divergenzpunkt in den aktuellen Zweig. Schneller Vorlauf ist das Standard-Merge-Verhalten in Git. Beim Neuanpassen ändern Sie hingegen einzelne Commits, indem Sie den Projektverlauf umschreiben, indem Sie für jedes Commit im ursprünglichen Zweig neue Commits erstellen. Dies führt zu einem linearen Verlauf ohne abweichende Zweige.
- Git merge ändert den Verlauf nicht, während der Kontext des Zweigs erhalten bleibt, dh die vorhandenen Zweige werden in keiner Weise geändert. Es wird ein neues Commit erstellt (es sei denn, es handelt sich um eine Schnellvorlauf-Zusammenführung), die Commits bleiben jedoch vom Zweig aus erreichbar. Git Rebase hingegen rationalisiert eine möglicherweise komplexe Historie. Commits werden umgeschrieben, alte Versionen werden vergessen und die DAG der Revisionen wird geändert. Commits sind mit rebase nicht mehr erreichbar, dh Sie können veröffentlichte Zweige nicht mehr rebasieren.
Kurz gesagt, sowohl Zusammenführen als auch Neubasis sind die beiden Möglichkeiten, Änderungen in Git zu integrieren, aber sie unterscheiden sich in ihrer Art und Weise. Das Zusammenführen ist eine einstufige Operation mit einem zentralen Ort, um Konflikte zu lösen, und die von der Zweigstelle aus erreichbaren Commits bleiben erreichbar. Rebase hingegen wendet jedes Commit erneut einzeln an, indem es die Historie neu schreibt, indem für jedes Commit im Quellzweig neue Commits erstellt werden. Was einmal erreichbar war, ist also nicht mehr erreichbar. Eine Rebase ändert grundlegend die Vorstellung, wann und wo eine Folge von Commits entwickelt wurde.