Im Standardmodus ist Git Pull eine Abkürzung für Git Fetch, gefolgt von Git Merge FETCH_HEAD.
Wenn Sie ein tun git pull origin master,
git pullführt eine Zusammenführung, die oft eine Zusammenführung verpflichten schafft. Daher ist das Ziehen von der Fernbedienung standardmäßig KEIN harmloser Vorgang: Es kann ein neues Commit-Sha erstellt werden, das zuvor nicht vorhanden war. Dieses Verhalten kann einen Benutzer verwirren, da das, was sich als harmloser Download-Vorgang anfühlt, den Festschreibungsverlauf auf unvorhersehbare Weise ändert.
Um dies zu vermeiden, benötigen Sie
git pull --ff-only
(oder nicht? Lesen Sie weiter, um zu sehen, welche Ihren Anforderungen entspricht.)
Mit git pull --ff-onlyaktualisiert Git Ihren Zweig nur, wenn er "schnell vorgespult" werden kann, ohne neue Commits zu erstellen. Wenn dies nicht möglich ist, wird der git pull --ff-onlyVorgang einfach mit einer Fehlermeldung abgebrochen.
Sie können Ihren Git-Client so konfigurieren, dass er immer --ff-onlystandardmäßig verwendet wird, sodass Sie dieses Verhalten auch dann erhalten, wenn Sie das Befehlszeilenflag vergessen:
git config --global pull.ff only
Hinweis: Das --globalFlag wendet die Änderung für alle Repositorys auf Ihrem Computer an. Wenn Sie dieses Verhalten nur für das Repository wünschen, in dem Sie sich befinden, lassen Sie das Flag weg.
Von hier genommen
Diese Warnung wurde in Git 2.27 hinzugefügt, wie Joe in seiner Antwort hervorhob.
So sieht die vollständige Warnung aus:
Es wird davon abgeraten, zu ziehen, ohne anzugeben, wie unterschiedliche Zweige miteinander in Einklang gebracht werden sollen. Sie können diese Nachricht
unterdrücken, indem Sie einen der folgenden Befehle einige Zeit vor Ihrem nächsten Pull ausführen : git config pull.rebase false # merge (die Standardstrategie)
git config pull.rebase true # rebase
git config pull.ff only # nur schneller Vorlauf
Sie können "git config" durch "git config --global" ersetzen, um eine Standardeinstellung für alle Repositorys festzulegen. Sie können auch --rebase, --no-rebase oder --ff-only in der Befehlszeile übergeben, um den konfigurierten Standard pro Aufruf zu überschreiben.
Die Warnung enthält drei Befehle als Optionen. Alle diese Befehle unterdrücken die Warnung. Sie dienen jedoch unterschiedlichen Zwecken:
git config pull.rebase false # merge (the default strategy)
Dies behält das Standardverhalten bei und unterdrückt die Warnung.
git config pull.rebase true # rebase
Dies wird tatsächlich über dem Remote-Zweig festgeschrieben, wobei ein einzelner Zweig sowohl lokal als auch remote verwaltet wird (im Gegensatz zum Standardverhalten, bei dem zwei verschiedene Zweige beteiligt sind - einer auf lokaler und der andere auf Remote-Zweig), und um beide zu kombinieren, wird eine Zusammenführung durchgeführt ).
git config pull.ff only # fast-forward only
Dies führt den Pull nur aus, wenn der lokale Zweig schnell vorgespult werden kann. Wenn nicht, wird es einfach mit einer Fehlermeldung abgebrochen (und es werden keine Commits erstellt).
Aktualisieren:
Wenn Sie Git 2.29oder oben können Sie nun eingestellt pull.ffzu false, trueoder onlyzu der Warnung loszuwerden.
git config pull.ff
true- Dies ist das Standardverhalten. Pull wird nach Möglichkeit schnell vorgespult, andernfalls wird es zusammengeführt.
git config pull.ff false
false - Pull wird niemals vorgespult und es wird immer eine Zusammenführung erstellt.
git config pull.ff only
only - Pull wird nach Möglichkeit schnell vorgespult, andernfalls wird der Vorgang mit einer Fehlermeldung abgebrochen.