Eine weitere Frage , die git pull
ist wie ein git fetch
+ git merge
.
Aber was ist der Unterschied zwischen git pull
VS git fetch
+ git rebase
?
git
git-rebase
git-pull
git-fetch
Michael
quelle
quelle
Antworten:
Aus Ihrer Frage sollte ziemlich offensichtlich sein, dass Sie tatsächlich nur nach dem Unterschied zwischen
git merge
und fragengit rebase
.Nehmen wir also an, Sie sind im allgemeinen Fall - Sie haben einige Arbeiten an Ihrem Hauptzweig ausgeführt, und Sie ziehen aus den Ursprüngen, die ebenfalls einige Arbeiten ausgeführt haben. Nach dem Abruf sehen die Dinge so aus:
Wenn Sie an diesem Punkt zusammenführen (das Standardverhalten von Git Pull) und davon ausgehen, dass keine Konflikte vorliegen, erhalten Sie Folgendes:
Wenn Sie andererseits die entsprechende Rebase durchgeführt haben, erhalten Sie Folgendes:
Der Inhalt Ihres Arbeitsbaums sollte in beiden Fällen gleich sein. Sie haben gerade eine andere Geschichte erstellt, die dazu führt . Die Rebase schreibt Ihren Verlauf neu, sodass es so aussieht, als hätten Sie über dem neuen Master-Zweig (
R
) von origin festgeschrieben , anstatt dort, wo Sie ursprünglich festgeschrieben haben (H
). Sie sollten den Rebase-Ansatz niemals verwenden, wenn bereits eine andere Person aus Ihrem Hauptzweig gezogen hat.Beachten Sie schließlich, dass Sie
git pull
für einen bestimmten Zweig die Einrichtung von rebase anstelle von merge einrichten können, indem Sie den Konfigurationsparameterbranch.<name>.rebase
auf true setzen. Sie können dies auch für einen einzelnen Zug mit tungit pull --rebase
.quelle
TLDR:
git pull
ist wie laufengit fetch
danngit merge
git pull --rebase
ist wiegit fetch
danngit rebase
Als Antwort auf Ihre erste Aussage,
git pull
ist wie eingit fetch
+git merge
.(Ref: https://git-scm.com/docs/git-pull )
Für Ihre zweite Aussage / Frage:
"Aber was ist der Unterschied zwischen
git pull
VSgit fetch
+ ?git rebase
"Wieder aus derselben Quelle:
git pull --rebase
Nun, wenn Sie fragen wollten
'der Unterschied zwischen
merge
undrebase
'Dies wird auch hier beantwortet:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(der Unterschied zwischen der Änderung der Art und Weise, wie der Versionsverlauf aufgezeichnet wird)
quelle
git fetch + git rebase
Befehle von jetzt an funktionieren. Es gibt keinen mehr oder weniger Konflikt auf unserem Git-Baum von jetzt an :)