Doel
Het doel van dit spiekbriefje is om veel gebruikte git commando's samen op te lijsten. Zo kan je snel een git commando opzoeken en uitvoeren. Kopieer dit gerust, maak een eigen korte lijst of verwijs naar deze pagina.
Basis
Enkel basis commando's.
git status | Bekijk de huidige status van uw repository. |
git init | Maak een nieuwe repository aan in de huidige directory. |
git xxxcommandxxx --help | Open de default help pagina. Dit opent een externe html help page. |
Bekijk de geschiedenis
Bekijk de log of history van het project.
git log | Bekijk de commit geschiedenis |
git log --summary | Toont een samenvatting van elke commit (en niet de volledige info) |
git log --oneline -n 5 | Toont elke commit in één lijn. Optie n beperkt het tot 5 lijnen. |
git log --graph | Een grafische weergave in het command window. |
git log --graph master | Een grafische weergave van enkel de master branch |
git log [filename] | Geschiedenis van één bestand: filename |
git log --follow [filename] | Volg ook de naams-wijzigingen van een bestand (renames) |
git log --first-parent [filename] | Volg enkel de eerste parent. Dus de main branch en niet van de merged branch. |
git log --all [filename] | De geschiedenis van een bestandsnaam |
git log SAH1..SHA2 --oneline | Toon de geschiedenis tussen deze 2 commits (SHA). Vergeet de dubbele punt (..) niet! |
git log SAH1..SHA2 --oneline --stat | Voeg enkele statistieken toe, hoeveel lijnnummers gewijzigd zijn. |
Gitk
Visualisatie met gitk
gitk | Bekijk de geschiedenis met een visuele interface. |
gitk [filename] | De geschiedenis van één bestand, visueel. |
gitk --full-history [filename] | De volledige geschiedenis van één bestandsnaam, inclusief merges, etc... |
gitk --follow [filename] | Bekijk de geschiedenis en volg de naamswijzigingen (renames.) |
Reflog
De reflog is een krachtig commando dat toelaat om verloren commits terug te vinden. Dit gebeurt bijvoorbeeld door een commit te maken op een workspace zonder branch naam. Als je dan van branch verspringt, dan zie je deze commit niet meer terug.
Note: lost commits zullen verdwijnen als de database operuimd wordt (prune)
git reflog | Bekijk de geschiedenis van alle commits en acties. |
Add
Voeg bestanden toe. Dat wil zeggen: Van de working-copy naar de staging-area (or index).
git add file.txt | stage een bestand |
git add '*.txt' | Voeg alle bestanden toe, inclusief deze in subfolders. |
git add -A '*.*' | stage ook bestanden die je wilt verwijderen: -A |
git rm file.txt | Verwijder dit bestand lokaal (in de working-copy) |
fit rm -r foldername | Verwijder bestanden en folders recursief |
git add . | Voeg alle bestanden toe |
git reset . | Het omgekeerde van add: Verwijder bestand van de staging-area |
Commit
Voeg een commit toe aan Git.
git commit -m "Omschrijving van de commit" | Voer een commit uit, met volgende omschrijving (-m = message) |
git commit --amend --no-edit | Voeg een wijziging toe aan de vorige commit. Eigenlijk wordt dit een nieuwe commit (SHA) en wordt de vorige commit verwijdert. |
git gui | Start de standaard GUI voor een commit |
Remote
Te gebruiken voor een lokale repository. Verwijs naar een remote server die aan de lokale repository gelinkt is.
git remote add origin https://github.com/try-git/try_git.git | Voeg een remote repository toe aan uw lokale repository. |
git fetch | Haal alle objecten en referencies van de remote repository binnen in uw lokale repository. Dit betekent niet dat uw working-copy verandert. |
git pull | Voert eigenlijk 2 acties uit: Git pull + merge lokaal. Eerst worden alle objecten binnengehaald, daarna gaat een automatische merge de laatste objecten op uw lokale working-copy zetten. |
Push
Aan te vullen.
git push --set-upstream origin master | Enkel als de upstream niet bestaat, dan wordt de origin remote gezet voor de master branch. |
git push -u origin master | Hetzelfde |
git push origin feature1 | Push de |
git push origin | push current branch to origin |
git push | push current branch to current branch remote (most likely origin) |
git push --force-with-lease | push current branch and update remote branch. |
Voorbeeld:
|
git commit -m “Update message” --amend git push --force-with-lease |
Merge
Voeg een branch in een andere
git merge feature | Voeg de feature branch in the huidige branch. Dit betekent dat er wijzigingen gebeuren op de huidige branch, want je voegt een andere erin. |
git merge --no-ff feature | Merge zonder fast-forward, dus maak je een bubbel |
git merge --squash feature | Voeg branch feature in de huidige branch, in één enkele commit. Dus die branch wordt platgeduwd tot één commit. Je moet die squash merge nog committen! |
Tag
Het plaatsen van een label op een commit.
git tag 0.3 | Maak een lichtgewicht label. This is eigenlijk niks meer dan het opslaan van de SHA van deze commit in een bestand in de .git folder. |
git tag -a 0.3 | Maak een annotated label. Dit is een appart git-object met zijn eigen SHA en meer informatie voer de commit, zoals naam, datum, ... |
git tag -d 0.2 | Verwijder een label |
git tag -f 0.2 | Forceer het verplaatsen van een label naar de huidige commit. |
git tag -m "Tag message" 0.2 | Voeg een lichtgewicht label toe met message |
git push origin tag_name | Push één tag |
git push --tags | Push all tags (niet aan te raden) |
git tag -d 12345 git push origin :refs/tags/12345 |
Verwijder een remote tag: 1) Verwijder de tag lokaal. 2) Push de lege tag referentie naar de remote |
|
overzicht van de labels |
git tag | Lijst van alle lokale labels |
git tag -l | Lijst van alle lokale labels |
git tag -l pattern | Beperk de labels tot dit patroon. bv: v6.5.* |
git tag -n | Lijst van alle lokale labels met een geannoteerde message |
git show-ref --tags | Toon de referenties naar de labels (tag) |
git show-ref --tags -d | Toon de referentie naar de tag + de commit waarom deze tag staat |
git ls-remote --tags origin | Toon de remote labels (referentie van tag object + commit message) |
git ls-remote --refs origin | Toon de remote labels (enkel de reference van de commit message) |
Reset
Reset een commit naar een vorige commit.
git reset folder/file.txt | Verwijder een bestand van de staged/indexed area |
git reset HEAD --soft | Ga terug naar de committed history, maar laat de bestanden in de working directory. |
git reset HEAD --mixed | Ga terug naar de committed + staged history, maar laat de bestanden in de working directory. |
git reset HEAD --hard | Ga terug naar de committed +staged + working directory history. |
git reset HEAD~ | Ga terug naar de vorige commit. (delete een commit). wijzigingen blijven wel in de working directory (uncommitted) |
git reset HEAD~2 | Do dit 2 keer. (Je kan ook ^ gebruiken ipv ~, dan volg je wel een andere parent, enkel voor merges. zie manual) |
Template
Aan te vullen.