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