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
?
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
?
Antworten:
Aus Ihrer Frage sollte ziemlich offensichtlich sein, dass Sie tatsächlich nur nach dem Unterschied zwischen git merge
und fragen git 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:
- o - o - o - H - A - B - C (master)
\
P - Q - R (origin/master)
Wenn Sie an diesem Punkt zusammenführen (das Standardverhalten von Git Pull) und davon ausgehen, dass keine Konflikte vorliegen, erhalten Sie Folgendes:
- o - o - o - H - A - B - C - X (master)
\ /
P - Q - R --- (origin/master)
Wenn Sie andererseits die entsprechende Rebase durchgeführt haben, erhalten Sie Folgendes:
- o - o - o - H - P - Q - R - A' - B' - C' (master)
|
(origin/master)
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 Konfigurationsparameter branch.<name>.rebase
auf true setzen. Sie können dies auch für einen einzelnen Zug mit tun git pull --rebase
.
git pull
ist wie laufen git fetch
dann git merge
git pull --rebase
ist wie git fetch
danngit rebase
git pull
ist wie ein git fetch
+ git merge
.
"In seinem Standardmodus ist Git Pull eine Abkürzung für,
git fetch
gefolgt vongit merge
FETCH_HEAD." Genauer gesagt,git pull
läuftgit fetch
mit den angegebenen Parametern und ruft danngit merge
auf, um die abgerufenen Verzweigungsköpfe mit dem aktuellen Zweig zusammenzuführen. "
(Ref: https://git-scm.com/docs/git-pull )
"Aber was ist der Unterschied zwischen git pull
VS git fetch
+ ? git rebase
"
Wieder aus derselben Quelle:
git pull --rebase
"Mit --rebase wird git rebase anstelle von git merge ausgeführt."
'der Unterschied zwischen merge
und rebase
'
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)
git fetch + git rebase
Befehle von jetzt an funktionieren. Es gibt keinen mehr oder weniger Konflikt auf unserem Git-Baum von jetzt an :)