Git

Enige tijd geleden ben ik overgestapt van SVN naar GIT. Dit kwam eigenlijk nadat ik qua OS naar Linux over was gegaan en daar geen goede SVN client kon vinden. En zakelijk gebruikte ik toch al GIT, dus het was een snelle keuze.

Om de commando’s in het begin snel te leren heb ik GIT vanaf de terminal aangestuurd. En daar is het eigenlijk altijd bij gebleven. Toch moet je dan vaak even spieken hoe het ook al weer precies moet. Vandaar deze post, vooral een reminder voor mezelf.

Init

git init

Maakt een nieuwe repo aan. Makkelijkste als je al in de folder van het project zit, bijvoorbeeld /var/www/project. Git maakt hier een .git subdir aan.

Clone

Kopieer een bestaande repo.

git clone <repo>
git clone https://github.com/<username>/<repo>.git

Clone maakt atomatisch een remote connection aan, origin, die verwijst naar de originele repo.

Pull

Merge wijzigingen in je locale repo

git pull <remote>
git pull origin master

Pull is eigenlijk een combinatie van git fetch en git merge.

Wijzigingen

Bij nieuwe bestanden altijd even add doen.

git add <file>
git add <directory>

Alles toevoegen via één van de volgende add commando’s:

git add .

Nieuwe en gewijzigde bestanden op staging plaatsen. Verwijderde bestanden worden hierbij niet meegenomen.

git add -u

Gewijzigde en verwijderde bestanden op staging plaatsen. De nieuwe bestanden worden hierbij niet meegenomen.

git add -A

Plaatst alles op staging, het is de combinatie van git add . en git add -u.

Dan committen naar de staging area:

git commit -a

Nano start op voor de commit message. En zelfs daar, in de simpelste editor, kun je een paar regeltjes in acht nemen.

Eerste regel is het onderwerp
Hierna volgt de uitleg met een max van zeventig tekens op een enkele
rij, waarna je verder gaat naar de volgende. Bij veel GIT clients,
ook online, wordt de eerste regel dikgedrukt of wordt bij het over-
zicht alleen de eerste regel zichtbaar en de rest pas bij de pagina
van een specifieke commit.

Plaatjes maken abstracte dingen soms ineens duidelijk, dus ook de relatie tussen add, commit, staging en repository:

via git-scm.com

via git-scm.com

Push

Je lokale wijzigingen naar de repo brengen.

git push <remote> <branch> git push origin master

Rename

git mv olddir newdir

gevolgt door

git add -u newdir

De -u optie zorgt ervoor dat de bestaande repo files geupdate worden. Vergeet je deze optie dan zal git alle oude bestanden als deleted aanmerken en de bestanden in de nieuwe folder ook als nieuwe bestanden aanmerken. Je raakt de versioning dus een beetje kwijt…

Revert

git revert <commit-id>

revert maakt een nieuwe commit aan dat alle wijzigingen van ongedaan maakt. Het verwijderd dus een enkele commit, het gaat niet terug naar een bepaald punt in de commit-tree. Wil je terug, dan gebruik je reset.

Reset

Altijd dubbel checken of git reset wel echt is wat je nodig hebt!

git reset <filename>

Verwijderd een bestand van de staging area. Gebruik het als je per ongelijk IDE setting oid op de staging hebt gegooid.

git reset --hard <commit-id>

Ga terug naar een bepaalde . Zowel de staging area als de working directory worden aangepast.

Config

Gebruikersnaam wijzigen:

git config --global user.name <gebruikersnaam>

E-mailadres aanpassen:

git config --global user.email <emailadres>

Editor aanpassen

git config --global core.editor <nano>

Alle instelling van de gebruiker staan ook in de file ~/.gitconfig

.gitignore

Bepaalde bestanden of folders uitsluiten.

Voor Eclipse in ieder geval:

.settings .project .buildpath

En altijd

git status