Git Pull gegen Git Rebase

123

Ich bin ein Noob in Git und versuche den Unterschied zwischen git pullvs zu lernen git rebase. Kann jemand ein Beispiel geben, wann welche Option verwendet werden soll, da ich der Meinung bin, dass beide den gleichen Zweck erfüllen.

user4943236
quelle
Ja, habe ich. Der Unterschied zwischen Pull und Rebase besteht darin, dass Pull eine Zusammenführung durchführt. Die Antwort auf Ihre Frage finden Sie unter dem Link, den ich eingefügt habe.
Thibault D.
1
@ user4943236 1) Sie wissen nicht einmal, wer Ihre Frage abgelehnt hat, gehen nicht herum und beschuldigen Leute ohne Grund 2) Wenn es meine Ablehnung war, würde ich sie nicht einfach entfernen, weil dies so einfach ist, eine Antwort durch Lesen zu finden Dokumentation
Tim
Beantwortet das deine Frage? Git Pull VS Git Fetch Vs Git Rebase
Shiwangini

Antworten:

129

git pullund git rebasesind nicht austauschbar, aber sie sind eng miteinander verbunden.

git pullRuft die neuesten Änderungen des aktuellen Zweigs von einer Fernbedienung ab und wendet diese Änderungen auf Ihre lokale Kopie des Zweigs an. Im Allgemeinen erfolgt dies durch Zusammenführen, dh die lokalen Änderungen werden in die Remote-Änderungen zusammengeführt. Also git pullist ähnlich wie git fetch & git merge.

Rebasing ist eine Alternative zum Zusammenführen. Anstatt ein neues Commit zu erstellen, das die beiden Zweige kombiniert, werden die Commits eines der Zweige übereinander verschoben.

Sie können mit rebase anstelle von merge ( git pull --rebase) ziehen. Die lokalen Änderungen, die Sie vorgenommen haben, werden zusätzlich zu den Remote-Änderungen neu erstellt, anstatt mit den Remote-Änderungen zusammengeführt zu werden.

Atlassian verfügt über eine hervorragende Dokumentation zum Zusammenführen und erneuten Basieren .

Peter
quelle
51

git-pull - Abrufen von und Integration in ein anderes Repository oder einen lokalen Zweig GIT PULL

Grundsätzlich ziehen Sie einen Remote-Zweig zu Ihrem lokalen, Beispiel:

git pull origin master

Zieht den Hauptzweig in Ihr lokales Repository

git-rebase - Forward-Port-Local-Commits für den aktualisierten Upstream-Head GIT REBASE

In diesem Fall werden Ihre lokalen Änderungen über Änderungen gestellt, die von anderen Benutzern remote vorgenommen wurden. Beispielsweise:

  • Sie haben einige Änderungen in Ihrer lokalen Niederlassung vorgenommen, z. B. aufgerufen SOME-FEATURE
  • Ihr Freund hat in der Zwischenzeit an anderen Funktionen gearbeitet und seinen Zweig zum Master zusammengeführt

Jetzt möchten Sie seine und Ihre Änderungen in Ihrer lokalen Niederlassung sehen. Dann checken Sie den masterZweig aus:

git checkout master

dann kannst du ziehen:

git pull origin master

und dann gehst du zu deiner Filiale:

git checkout SOME-FEATURE

und Sie können Rebase durchführen master, um die neuesten Änderungen zu erhalten und Ihre Branch Commits an die Spitze zu setzen:

git rebase master

Ich hoffe jetzt ist es ein bisschen klarer für dich.

Tomasz
quelle
15
Sie müssen den Master nicht auschecken. Bleiben Sie in Ihrer Filiale und tun Sie: git fetchdann git rebase origin/master.
Antoine Martin
Durch Auschecken des lokalen Masters und anschließendes Ziehen des Ursprungsmasters wird auch Ihr lokaler Master aktualisiert. Dies ist eine der besten Methoden, die angewendet werden sollten
Ashwani
20

In einer Nussschale :

-> Git Merge: Es werden einfach Ihre und Remote-Änderungen zusammengeführt, wodurch ein weiterer Commit-Verlaufsdatensatz erstellt wird

-> Git Rebase: Damit werden Ihre Änderungen über alle neuen Remote-Änderungen gestellt und der Commit-Verlauf neu geschrieben, sodass Ihr Commit-Verlauf viel sauberer ist als der Git-Merge. Rebase ist eine destruktive Operation. Das heißt, wenn Sie es nicht richtig anwenden, können Sie engagierte Arbeit verlieren und / oder die Konsistenz der Repositorys anderer Entwickler beeinträchtigen.

Saurin Vala
quelle