Suche…
Einführung
Im Gegensatz zum Push-Vorgang mit Git, bei dem Ihre lokalen Änderungen an den Server des zentralen Repositorys gesendet werden, übernimmt das Ziehen mit Git den aktuellen Code auf dem Server und "zieht" ihn vom Server des Repositorys auf Ihren lokalen Computer. In diesem Thema wird der Vorgang des Abrufs von Code aus einem Repository mit Git sowie die Situationen erläutert, die beim Ziehen von anderem Code in die lokale Kopie auftreten können.
Syntax
- git pull [Optionen [<Repository> [<Refspec> ...]]
Parameter
Parameter | Einzelheiten |
---|---|
--quiet | Keine Textausgabe |
-q | Abkürzung für --quiet |
--verbose | ausführliche Textausgabe. Wird an Befehle zum Abrufen und Zusammenführen / Zurücksetzen übergeben. |
-v | Abkürzung für --verbose |
--[no-]recurse-submodules[=yes | on-demand | no] | Neue Commits für Submodule abrufen? (Nicht dass dies kein Pull / Checkout ist) |
Bemerkungen
git pull
führt git fetch
mit den angegebenen Parametern aus und ruft git merge
auf, um die abgerufenen Zweigköpfe mit dem aktuellen Zweig zusammenzuführen.
Aktualisierung mit lokalen Änderungen
Wenn lokale Änderungen vorhanden sind, git pull
Befehl git pull
Berichterstellung ab:
Fehler: Ihre lokalen Änderungen an den folgenden Dateien werden beim Zusammenführen überschrieben
Um zu aktualisieren (wie bei svn update mit subversion), können Sie Folgendes ausführen:
git stash
git pull --rebase
git stash pop
Ein bequemer Weg könnte sein, einen Alias zu definieren mit:
git config --global alias.up '!git stash && git pull --rebase && git stash pop'
git config --global alias.up 'pull --rebase --autostash'
Als nächstes können Sie einfach verwenden:
git up
Code von der Fernbedienung abziehen
git pull
Ziehen, lokal überschreiben
git fetch
git reset --hard origin/master
Achtung: Bei der Verwendung von begeht verworfen reset --hard
gestellt werden kann unter Verwendung von reflog
und reset
werden immer unbestätigte Änderungen gelöscht.
Ändern Sie origin
und master
in den Remote- und Zweig, in den Sie zwangsweise ziehen möchten, falls sie anders benannt sind.
Linearer Verlauf beim Ziehen
Neueinstellung beim Ziehen
Wenn Sie neue Commits aus dem Remote-Repository abrufen und lokale Änderungen am aktuellen Zweig vorgenommen haben, führt git automatisch die Remote-Version und Ihre Version zusammen. Wenn Sie die Anzahl der Zusammenführungen in Ihrem Zweig reduzieren möchten, können Sie git anweisen, Ihre Commits in der Remote-Version des Zweigs neu zu definieren.
git pull --rebase
Machen Sie es zum Standardverhalten
Geben Sie den folgenden Befehl ein, um dies als Standardverhalten für neu erstellte Zweige festzulegen:
git config branch.autosetuprebase always
So ändern Sie das Verhalten eines vorhandenen Zweigs:
git config branch.BRANCH_NAME.rebase true
Und
git pull --no-rebase
So führen Sie einen normalen Zusammenführungszug aus.
Prüfen Sie, ob es schnell vorwärts geht
Um nur das schnelle Weiterleiten des lokalen Zweigs zuzulassen, können Sie Folgendes verwenden:
git pull --ff-only
Dies zeigt einen Fehler an, wenn der lokale Zweig nicht schnell vorwärts gerollt werden kann und entweder neu basiert oder mit Upstream zusammengeführt werden muss.
Ziehen Sie, "Erlaubnis verweigert"
Es können einige Probleme auftreten, wenn der .git
Ordner eine falsche Berechtigung hat. Beheben dieses Problems durch Festlegen des Besitzers des vollständigen .git
Ordners. Es kommt manchmal vor, dass ein anderer Benutzer die Rechte des .git
Ordners oder der Dateien zieht und ändert.
Um das Problem zu lösen:
chown -R youruser:yourgroup .git/
Änderungen in ein lokales Repository ziehen
Einfaches Ziehen
Wenn Sie an einem Remote-Repository (z. B. GitHub) mit einer anderen Person arbeiten, möchten Sie Ihre Änderungen irgendwann mit ihnen teilen. Sobald sie gedrückt ihre Änderungen an eine Remote - Repository, können Sie diese Änderungen abrufen , indem Sie aus diesem Repository ziehen.
git pull
Wird es in den meisten Fällen tun.
Ziehen Sie von einer anderen Fernbedienung oder einem Zweig aus
Sie können Änderungen von einer anderen Remote- oder Zweigstelle abrufen, indem Sie deren Namen angeben
git pull origin feature-A
Die Filiale ziehen feature-A
Form origin
in Ihre lokale Niederlassung. Beachten Sie, dass Sie direkt einen URL anstelle eines Remote-Namens und einen Objektnamen angeben können, z. B. eine Festschreibungs-SHA anstelle eines Zweignamens.
Manueller Zug
Um das Verhalten eines Git-Pulls zu imitieren, können Sie git fetch
dann git merge
git fetch origin # retrieve objects and update refs from origin
git merge origin/feature-A # actually perform the merge
Dadurch erhalten Sie mehr Kontrolle und können den entfernten Zweig vor dem Zusammenführen prüfen. Tatsächlich können Sie nach dem Abrufen die entfernten Zweige mit git branch -a
und sie mit überprüfen
git checkout -b local-branch-name origin/feature-A # checkout the remote branch
# inspect the branch, make commits, squash, ammend or whatever
git checkout merging-branches # moving to the destination branch
git merge local-branch-name # performing the merge
Dies kann bei der Verarbeitung von Pull-Anfragen sehr praktisch sein.