In een aparte branch werken

Haal branches en of tags op, met "prune" worden alle niet bestaande tags/branches verwijderd

git fetch -p

Maak nieuwe branch op basis van origin/master en "switch" naar deze branch

git checkout -b nieuwe-naam-branch origin/master

Bovenstaande commando is dus eigenlijk een samenvoeging van git branch nieuwe-branch-naam origin/master en git checkout nieuwe-branch-naam.

Om te zien in welke branch je op dat moment zit:

git branch

Aanpassingen committen

Je werkt vervolgens in deze branch, dus daar kun comitten via de normale procedure:

git commit -a

Vervolgens kun je de branch en de aanpassingen die je daarin hebt gemaakt pushen naar de origin, zodat iedereen er bij kan:

git push origin naam-nieuwe-branch

Branches Mergen

Mergen d.m.v. een Pull request (bij GitHub, BitBucket, etc.)

Als je gebruik maakt van GitHub of BitBucket dan zal er automatisch een link geretourneerd worden om een pull-request te maken:
git-push-origin-met-pull-request

Je selecteert vervolgens in de pull-request naar welke branch en naar welke repository je wilt mergen:
bitbucket pull request form

Eventueel kun je een of meerdere reviewers taggen. Deze personen krijgen dan een mail dat jij een pull-request hebt aangemaakt en kunnen dan hun akkoord geven op jouw aanpassingen. Indien jij het recht hebt om te mergen kun je dit direct doen, in alle andere gevallen (bijvoorbeeld als je alleen lees-rechten hebt) dient een ander jouw pull-request te approven. Zodra dat gebeurd is kan er alsnog een merge worden uitgevoerd:
bitbucket pull request merge pagina 

Wanneer je via GitHub of BitBucket de nieuwe branch hebt gemerged, is het het handigst om een fetch te doen om alleen de nieuwe master (en eventueel andere branches) op te halen:

git fetch -p

Het -p argument staat voor prune en zorgt dat branches die niet meer bestaan automatisch worden verwijderd. Wanneer je nu git branch gebruikt zul je zien dat je nog steeds in de nieuwe branch werkt. Voor een volgende aanpassing maak je opnieuw een nieuwe branch aan d.m.v. bovenstaand git checkout -b ... commando. Het proces begint nu van begin af aan.

Het idee van GIT is om altijd in eigen branches te werken en deze steeds te mergen naar de master. Dat betekent dat je in de praktijk nooit handmatig aanpassingen in de master branch aanbrengt, tenzij dit door middel van het mergen van jouw branch gebeurt. Wanneer je bijvoorbeeld voor elke item op je todo een aparte branch maakt, kun je daar een aparte historie in opbouwen die over dat betreffende item op je todo gaat. Het is in de praktijk heel gebruikelijk om tegelijkertijd meerdere branches open te hebben staan, bijvoorbeeld als je aan een grote nieuwe functie aan het werk bent en er komt een belangrijke bug tussendoor.

Mocht je alsnog terug naar de master willen, dan kun je deze volgens onderstaande commando's switchen (let op dat git pull een merge-commit veroorzaakt):

git checkout master
git pull

Handmatig mergen

Mocht je geen gebruik maken van GitHub of BitBucket dan kun je ook handmatig de merge uitvoeren:

git checkout master
git merge

Aanpassingen na een merge

Een (lokale) branch verwijderen

Wanneer je een merge hebt gedaan blijft de branch standaard aanwezig in het systeem. Je kunt uiteraard de branch vanuit de interface van GitHub of Bitbucket laten verwijderen, maar hij zal dan alsnog op jouw computer aanwezig zijn. Als je zeker weet dat je geen aanpassingen meer aan deze branch gaat doen kun je deze eventueel handmatig verwijderen om alles schoon te houden:

git branch -D naam-nieuwe-branch

Hiervoor dient deze branch uiteraard niet meer de actieve working copy te zijn (gebruik weer git branch om dit te controleren).

Verder werken in een bestaande branch

Wanneer je meerdere branches hebt aangemaakt kun je natuurlijk schakelen tussen deze branches. Dit is handig als een aanpassing in een bepaalde branch een bugfix vereist of als het een hele grote aanpassing betreft en er moet even iets kleins tussendoor.

Switchen naar een lokale branch

Wanneer de betreffende branch lokaal staat kun je daar zeer gemakkelijk naar switchen. Gebruik git branch om te zien of het switchen gelukt is. Na het aanpassen kun je de normale workflow vanaf het committen weer volgen.

git checkout naam-lokale-branch

Switchen naar een remote branch

Wanneer een branch alleen in de origin staat (die niet lokaal) dan kun je deze branch binnenhalen volgens onderstaande opdrachten. Je branch wordt dan naar je lokale machine gehaald waarna je de normale workflow vanaf het committen weer kunt volgen. Handig als je je branch gepushed hebt vanaf een andere machine of als je aanpassingen wilt maken in een branch van iemand anders.

git fetch -p
git checkout -b naam-remote-branch origin/naam-remote-branch