Skip to content

Instantly share code, notes, and snippets.

@wiipiiw
Last active December 18, 2015 17:49
Show Gist options
  • Save wiipiiw/5820959 to your computer and use it in GitHub Desktop.
Save wiipiiw/5820959 to your computer and use it in GitHub Desktop.
Veelgebruikte GIT commando's met een lijntje uitleg.
Afkortingen
* wd - working directory
* sd - staging directory of index
Termen
* HEAD - 'points to the tip of the current (checked-out) branch'. wijst altijd naar je laatste commit.
* Tree-ish - kan verwijzen naar een tree, commit of tag
* SHA - de unieke 'code' die bv wordt gegenereerd bij elke commit. Bij het gebruiken van deze SHA in commando's is het meestal genoeg om de eerste 7 tot 10 karakters te nemen aangezien deze uniek genoeg zijn.
Basis gebruik
git clone - checkout/maak een kopie van een remote repo naar je locale schijf
git status - checken wat de status is van files in wd en sd
git add <file/directory> - voeg een file of directory toe aan de staging, klaar om te committen
git rm <file> - verwijder de file uit de wd en stage for commit
git diff <file/directory>
- vergelijk file of directory in wd met repo.
- gebruik git diff --staged <file/directory> om sd met repo te vergelijken.
git commit -m <'message'>
- de files die in staging staan committen.
- indien je in een merge(conflict) zit, kan je de message weglaten en vult GIT dit zelf in.
- gebruik -a om alle gestagede files eerst te adden.
- gebruik --amend om je laatste commit (message) te wijzigen. Aangezien je iets wijzigt aan de commit, zal de SHA ook veranderen. Een andere commit wijzigen is NIET mogelijk aangezien heel het nut van je commit history dan om zeep is. Wil je iets wijzigen aan een bestaande commit, zal dit moeten gebeuren door een nieuwe commit.
git log - toon alle commits, beginnend met de recentste
git show <SHA>
- toon details over een specifieke commit
- git show <hash>:<path/to/file> - toon de inhoud van de file in een specifieke commit
git push (<alias/branch>) - push de nieuwe commits naar de opgegeven remote repo.
git fetch (<alias/branch>) - sync alle nieuwe remote data met de locale tracking branch.
git pull (<alias/branch>) - doet hetzelfde ale git fetch, maar doet direct erna ook een git merge
git reset <SHA/HEAD> <file/directory>
- een reset zorgt ervoor dat je de HEAD pointer verplaatst naar een opgegeven commit.
- een --soft verplaatst de HEAD enkel. Als je commit zullen dus alle commits na de HEAD worden overschreven met de nieuwe commit
- een --mixed verplaatst de HEAD en zet de sd op dezelfde versie van de meegegeven commit
- een --hard verplaatst de HEAD en zet de sd én wd op dezelfde versie
- standaard wordt er een git reset --mixed gedaan (enkel sd).
- reset HEAD <file> gebruik je dan ook voor het unstagen van files.
- tip: doe een git log en kopieer de laatste x-aantal logs zodat je eventueel nog kan teruggaan indien je iets fout doet.
git revert <SHA> - 'Undo' een specifieke commit. Maw: doe alles teniet wat een bepaalde commit heeft veranderd.
git checkout -- <file/directory>
- je wd 'resetten' naar de versie van de files in HEAD. '--' geef je mee omdat het checkout commando ook een totaal andere functionaliteit heeft.
Config
Je hebt 3 niveau's van config:
* --system: overheen al je repo's en voor alle users op het systeem. Bevindt zich in /etc/gitconfig of /usr/etc/gitconfig
* --global: overheen al je repo's maar enkel voor de user die deze config heeft gezet. Bevindt zich in ~/.gitconfig
* op repo/project niveau. Bevindt zich project/.git/config
git config <--system/--global/> <key> <value> - set een value voor een bepaalde variable. Je kan ook rechtstreeks de juiste (bovenstaande) files aanpassen.
git config <--system/--global/> --list - toon alle gesette config values.
Settings
git config credential.helper 'cache --timeout=86400' -- cache je login credentials zodat je niet elke keer opnieuw met inloggen
git config ui.color true
Werken met branches
git branch (--list)
- toon alle branches. de * geeft aan welke branch op die moment uitgecheckt is.
- --move <new-name> om de branch te hernoemen
- --delete (-d) (-D voor force indien nog niet fully merged) <branch> om de branch te verwijderen
- --merged --no-merged - om te checken welke branches (niet) in de huidige branch zijn gemerged
git checkout <branchname>
- switch naar/chechout de branch.
- voor je switcht moet je altijd zien dat er geen changes meer zijn in je wd want deze zouden verloren gaan omdat de andere branch wordt uitgecheckt in je wd.
git merge <other-branch>
- merge de andere branch in de huidige branch
- om conflicten zoveel mogelijk te vermijden: maak regelmatig en kleine commits, merge regelmatig en pas geen whitespace aan indien niet nodig
git fetch
git diff --name-only master..origin/master
- trek de laatste commit binnen op de remote tracking branch (zonder te mergen naar de local branch) en vergelijk de local branch met deze remote tracking branch.
Remote branches
Remote branch local halen en tracken: git checkout -b feature/feature-1 origin/feature/feature-1
Other recources
http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide/1350157#1350157
https://www.atlassian.com/git/workflows
http://nvie.com/posts/a-successful-git-branching-model/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment