Last active
December 18, 2015 17:49
-
-
Save wiipiiw/5820959 to your computer and use it in GitHub Desktop.
Veelgebruikte GIT commando's met een lijntje uitleg.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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