Git pull
Met "git pull" kun je de remote commits die nog niet bij jou lokaal staan ophalen. Je hebt ook "git fetch" maar deze gebruik ik zelf niet vaak, maar zal ik later wellicht nog toevoegen aan deze tutorial.
Faster-forward
Git pull probeert standaard een faster-forward uit te voeren op je lokale branch. Dit beteken dat Git kijkt of je eigen branch niet voorloopt op de remote en als dat niet het geval is dan kunnen de remote commits op je HEAD gezet worden zonder conflicten en is de pull klaar.
Pull met merge
Wanneer er geen faster forward gedaan kan worden, dan zal Git automatisch een merge proberen te doen. Meer hierover kun je lezen op de pagina "git merge en git rebase". Stel dat je een automatische merge wilt voorkomen geef je de optie --ff-only mee. Dan zal git de remote commits alleen ophalen als er een faster forward gedaan kan worden. Wanner dat niet het geval is wordt de pull gestopt. Wil je dat er wel een automatische merge gedaan wordt maar niet automatisch gecommit wordt NA de merge geef dan --no-commit mee. Je zult dan, indien er geen faster-forward is gedaan zelf nog moeten committen, je kunt dan eventueel nog wijzingen aanbrengen dus.
Git pull repository:branch
Wanneer je een "git pull" doet zonder specificatie (wordt ook refspec genoemd) dan zal Git proberen de remote commits op te halen in de branch waar je op zit. Wanneer je lokale branch naam anders is als remote moet je dit wel goed configureren anders zal git je vertellen dat hij niet weet waar hij de content vandaan moet halen. Maar dit zal niet vaak voorkomen. Je kunt in zo'n geval ook zelf aangeven waar Git de content uit moet halen:
Hier kleeft alleen een gevaar aan, dat is dat wanneer je doet vanuit de verkeerde branch ("anderebranch" bijvoorbeeld) dat Git zal proberen deze branches te mergen. Als je hier op tijd achterkomt is dat niet zo'n probleem dan doe je:
Dat wilt zeggen, draai 1 commit terug. Die ene commit is dus je merge commit. Als je nog in merge status bent gebruik je logischerwijs HEAD ipv HEAD^1. Wanneer je merge al gepushed hebt wordt het lastiger, dan is "git revert" je redding.
Verder over Git pull..
Feitelijk (dat is ook wat de help zegt) is Git pull niets anders als een git fetch met een git merge erachter aan, en dat alle opties die git pull kent git fetch of git merge ook kent.
Inhoudsopgave
- Git clone of git init
- Git reset
- Git revert
- Git branch
- Git diff
- Git checkout
- Git cherry-pick
- Git merge en git rebase
- Git pull
- Git tag