Eine weitere Frage , die git pullist wie ein git fetch+ git merge.
Aber was ist der Unterschied zwischen git pullVS git fetch+ git rebase?
Eine weitere Frage , die git pullist wie ein git fetch+ git merge.
Aber was ist der Unterschied zwischen git pullVS git fetch+ git rebase?
Antworten:
Aus Ihrer Frage sollte ziemlich offensichtlich sein, dass Sie tatsächlich nur nach dem Unterschied zwischen git mergeund 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 pullfür einen bestimmten Zweig die Einrichtung von rebase anstelle von merge einrichten können, indem Sie den Konfigurationsparameter branch.<name>.rebaseauf true setzen. Sie können dies auch für einen einzelnen Zug mit tun git pull --rebase.
git pullist wie laufen git fetchdann git merge
git pull --rebaseist wie git fetchdanngit rebase
git pullist wie ein git fetch+ git merge.
"In seinem Standardmodus ist Git Pull eine Abkürzung für,
git fetchgefolgt vongit mergeFETCH_HEAD." Genauer gesagt,git pullläuftgit fetchmit den angegebenen Parametern und ruft danngit mergeauf, 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 pullVS 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 mergeund 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 rebaseBefehle von jetzt an funktionieren. Es gibt keinen mehr oder weniger Konflikt auf unserem Git-Baum von jetzt an :)