Zoeken…


Invoering

In tegenstelling tot pushen met Git, waarbij je lokale wijzigingen naar de server van de centrale repository worden verzonden, neemt het trekken met Git de huidige code op de server en 'sleept' het van de server van de repository naar je lokale machine. Dit onderwerp legt het proces uit van het ophalen van code uit een repository met behulp van Git, evenals de situaties die je kunt tegenkomen terwijl je verschillende code naar de lokale kopie haalt.

Syntaxis

  • git pull [opties [<repository> [<refspec> ...]]

parameters

parameters Details
--quiet Geen tekstuitvoer
-q steno voor --quiet
--verbose uitgebreide tekstuitvoer. Doorgegeven om respectievelijk opdrachten op te halen en samen te voegen / opnieuw op te starten.
-v steno voor - --verbose
--[no-]recurse-submodules[=yes | on-demand | no] Nieuwe commits ophalen voor submodules? (Niet dat dit geen pull / checkout is)

Opmerkingen

git pull voert git fetch met de gegeven parameters en roept git merge aan om de opgehaalde branch heads git merge te voegen met de huidige branch.

Bijwerken met lokale wijzigingen

Wanneer lokale veranderingen aanwezig zijn, git pull het git pull commando de rapportage:

fout: uw lokale wijzigingen in de volgende bestanden worden overschreven door samenvoegen

Om bij te werken (zoals svn update deed met subversion), kunt u uitvoeren:

git stash
git pull --rebase 
git stash pop

Een handige manier is om een alias te definiëren met behulp van:

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'

Vervolgens kunt u eenvoudig gebruiken:

git up

Haal de code van de afstandsbediening

git pull

Trek, overschrijf lokaal

git fetch
git reset --hard origin/master

Let op: hoewel commits worden reset --hard met reset --hard kan worden hersteld met reflog en reset , niet-doorgevoerde wijzigingen worden voor altijd verwijderd.

Verander origin en master in de afstandsbediening en de branch waar je met geweld naartoe wilt trekken, respectievelijk, als ze een andere naam hebben.

Lineaire geschiedenis behouden tijdens het trekken

Rebasen bij het trekken

Als je verse commits uit de externe repository haalt en je hebt lokale wijzigingen in de huidige branch, dan zal git automatisch de externe versie en je versie samenvoegen. Als je het aantal samenvoegingen op je branch wilt verminderen, kun je git vertellen om je commits te rebasen op de externe versie van de branch.

git pull --rebase

Dit maakt het standaardgedrag

Typ de volgende opdracht om dit het standaardgedrag te maken voor nieuw gemaakte vertakkingen:

git config branch.autosetuprebase always

Om het gedrag van een bestaande branch te veranderen, gebruik dit:

git config branch.BRANCH_NAME.rebase true

En

git pull --no-rebase

Om een normale samenvoeging uit te voeren.


Controleer of snel vooruitspoelbaar is

Om alleen snel doorsturen van de lokale vestiging toe te staan, kunt u gebruik maken van:

git pull --ff-only

Dit zal een foutmelding geven wanneer de lokale branch niet snel vooruit te sturen is en opnieuw moet worden rebased of samengevoegd met stroomopwaarts.

Trek, "toestemming geweigerd"

Sommige problemen kunnen optreden als de map .git verkeerde toestemming heeft. Dit probleem wordt opgelost door de eigenaar van de volledige .git map in te stellen. Soms gebeurt het dat een andere gebruiker de rechten van de .git map of -bestanden .git en wijzigt.

Het probleem oplossen:

chown -R youruser:yourgroup .git/

Wijzigingen aanbrengen in een lokale opslagplaats

Eenvoudig trekken

Wanneer u op een externe repository (bijvoorbeeld GitHub) werkt met iemand anders, wilt u op een gegeven moment uw wijzigingen met hen delen. Zodra ze hebben geduwd hun verandert in een remote repository, kunt u deze wijzigingen op te halen door te trekken uit deze repository.

git pull

Zal het in de meeste gevallen doen.


Trek van een andere afstandsbediening of tak

U kunt wijzigingen van een andere afstandsbediening of tak ophalen door hun namen op te geven

git pull origin feature-A

Trekt de branche feature-A vorm origin in uw eigen bankkantoor. Merk op dat je direct een URL kunt opgeven in plaats van een externe naam, en een objectnaam zoals een commit SHA in plaats van een filiaalnaam.


Handmatig trekken

Om het gedrag van een git pull te imiteren, kun je git fetch vervolgens git merge

git fetch origin # retrieve objects and update refs from origin
git merge origin/feature-A # actually perform the merge

Dit kan je meer controle geven en je kunt de externe branch inspecteren voordat je deze samenvoegt. Inderdaad, na het ophalen, kun je de remote branches zien met git branch -a , en ze bekijken met

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

Dit kan erg handig zijn bij het verwerken van pull-aanvragen.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow