Moderator Opmerking: Aangezien er al Zesenzestig antwoorden op deze vraag zijn geplaatst (waarvan sommige zijn verwijderd), moet je je afvragen of je al dan niet iets nieuws bijdraagt*** voordat je weer een nieuwe vraag plaatst.
Wat zijn de verschillen tussen git pull
en git fetch
?
In de eenvoudigste bewoordingen, git pull
doet een git fetch
gevolgd door een git merge
.
Je kunt op ieder moment een git fetch
doen om je remote-tracking branches onder refs/remotes/<remote>/
bij te werken.
Deze operatie verandert nooit iets aan je eigen lokale branches onder refs/heads
, en is veilig om te doen zonder je werkkopie te veranderen. Ik heb zelfs gehoord van mensen die git fetch
periodiek in een cron job op de achtergrond draaien (hoewel ik dit niet zou aanraden).
Een git pull
is wat je zou doen om een lokale branch up-to-date te brengen met zijn remote versie, terwijl je ook je andere remote-tracking branches zou updaten.
Git documentatie - git pull:
In zijn standaard modus,
git pull
is een afkorting voorgit fetch
gevolgd doorgit merge FETCH_HEAD
.
Eén gebruik van git fetch
is dat het volgende je alle wijzigingen in de remote branch zal vertellen sinds je laatste pull... zodat je het kunt controleren voordat je een echte pull doet, die bestanden in je huidige branch en werkkopie zou kunnen veranderen.
git fetch
git diff ...origin
Zie: https://git-scm.com/docs/git-diff betreffende de dubbele- en driedubbele punt syntax in het diff commando
git-pull - Ophalen uit en samenvoegen met een andere repository of een lokale branch SYNOPSISgit pull
... BESCHRIJVING Voert git-fetch uit met de gegeven parameters, en roept git-merge op om de opgehaalde kop(pen) samen te voegen in de huidige branch. Met --rebase, roept git-rebase in plaats van git-merge.
Merk op dat je . (huidige map) als de
om te trekken uit de lokale repository te halen - dit is handig als je lokale branches samenvoegt in de huidige branch. Merk ook op dat opties bedoeld voor git-pull zelf en onderliggende git-merge gegeven moeten worden voor de opties bedoeld voor git-fetch.
Je zou pull doen als je de geschiedenissen gemerged wilt hebben, je zou fetch doen als je alleen maar 'de codez' wilt hebben, zoals iemand hier sommige artikelen heeft getagd.