git - een simpele uitleg

een korte gids om je op weg te helpen met git, no deep shit :)

Tweet

door Roger Dudler (vertaling door Pieter Michels)
dank aan @tfnico, @fhd en Namics
gids in english, deutsch, español, français, indonesian, italiano, polski, português, русский, türkçe,
မြန်မာ, 日本語, 中文, 한국어
opmerkingen en aanpassingen op github

setup

Download git voor OSX

Download git voor Windows

Download git voor Linux

create a new repository

maak een nieuwe map, open deze map en voer
git init
uit om een nieuwe repository aan te maken.

checkout a repository

haal een repository lokaal binnen
git clone /path/to/repository
wanneer je git server niet lokaal staat
zal je volgende moeten uitvoeren
git clone gebruikersnaam@host:/path/to/repository

workflow

Je lokale repository bestaat uit 3 verschillende 'trees' beheerd door git. De eerste is je Working Directory dewelke je bestanden bevatten. De tweede is de Index dat zich als tussen stadium gedraagt (staging area) De laatste is de HEAD die verwijst naar de laatste 'commit' die je hebt gemaakt.

add & commit

Je kan aanpassingen aan je files toevoegen aan de Index git add <bestandsnaam>
of
git add *
Dit is de eerste stap in de basis werkwijze van git.
Om aanpassingen écht door te voeren gebruik je
git commit -m "Commit message"
De aanpassingen zijn nu toegevoegd aan de HEAD,
al zijn ze nog niet toegevoegd aan je repository als deze op een andere lokatie staat.

pushing changes

Je aanpassingen zitten nu in de HEAD van je lokale werk-repository.
Om deze aanpassingen door te sturen naar je repository op een andere lokatie, voer dan volgend commando uit
git push origin master
Verander master naar de branch-naam
waar je je aanpassingen naar wil sturen.

Als je lokale werkbestanden niet gesynchroniseerd zijn
met een bestaande repository (op een andere server bijvoorbeeld),
voeg dan de bestaande repository toe aan je lokale repository
git remote add origin <server>
Nu kan je je lokale aanpassingen, en dus ook je lokale repository, synchroniseren met de server die je net hebt toegevoegd.

branching

Branches worden gebruikt om verschillende features te ontwikkelen in geïsoleerde omgevingen, los van elkaar.
De master branch is de basis of standaard branch wanneer je een nieuwe repository aanmaakt.
Maak nieuwe branches aan wanneer je nieuwe toevoegingen ontwikkelt en voeg ze samen (merge) met de master branch wanneer je klaar bent.

maak een nieuwe branch aan met de naam "feature_x"
en ga er onmiddellijk naartoe
git checkout -b feature_x
ga terug naar de master branch
git checkout master
verwijder de branch
git branch -d feature_x
een branch is niet beschikbaar voor anderen
tenzij je ze synchroniseert met de centale repository
git push origin <branch>

update & merge

om je lokale repository te updaten naar de laatste versie, voer dan volgend commando uit in je lokale repository
git pull
op die manier kan je de aanpassingen fetchen
en mergen met je lokale bestanden.
om een andere branch samen te voegen met je actieve branch, gebruik je
git merge <branch>
in beide gevallen probeert git de aanpassingen automatisch te mergen.
Jammer genoeg is dit niet altijd mogelijk en resulteert dit soms in een conflict. Je bent dan zelf verantwoordelijk om de conflicten manueel op te lossen en te mergen. Na de aanpassingen moet je de aangepaste bestanden opnieuw toevoegen aan je lokale repository
git add <filename>
alvorens je aanpassingen dan terug samen te voegen kan je ook de aangepaste code bekijken door middel van
git diff <source_branch> <target_branch>

tagging

net zoals in SVN is het aangewezen om verschillende releases van je applicatie in een tag te steken. Je kan een nieuwe tag aanmaken met de naam 1.0.0 door volgend commando uit te voeren
git tag 1.0.0 1b2e1d63ff
het 1b2e1d63ff gedeelte van het commando
staat voor de eerste 10 karakters van de commit id die je in een tag wil steken.
De commit id kan je opvragen door volgend commando uit te voegen
git log
het hoeven niet per se de eerste 10 karakters van de commit id te zijn, zolang ze maar uniek zijn.

replace local changes

In het geval dat je wil terug gaan naar een vorige versie van een bestand (fouten maken kan gebeuren hé) gebruik je
git checkout -- <filename>
dit zal het bestand in je huidige werkmap vervangen door de laatste versie die zich in de HEAD tree bevindt. De aanpassingen die je reeds hebt toegevoegd én de nieuw aangemaakte bestanden blijven behouden.

Stel nu dat je alle lokale aanpassingen wil vervangen door de laatste versie van de repository die zich op de server bevindt
kan je volgende commando reeks gebruiken
git fetch origin
git reset --hard origin/master

useful hints

ingebouwde git GUI
gitk
handige kleuren output voor git
git config color.ui true
toon je log op 1 lijn per commit
git config format.pretty oneline
gebruikte interactieve bestands toevoeging
git add -i

links & resources

grafische software

andere gidsen

Clarify

comments