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:

2,9
git config --global alias.up '!git stash && git pull --rebase && git stash pop'
2,9
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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow