Git
Chapters ▾ 2nd Edition

A3.3 Git Commando’s - Basic snapshotten

Basic snapshotten

Voor de gewone workflow van het stagen van inhoud en dit committen naar je historie, zijn er maar een paar basis commando’s.

git add

Het git add commando voegt inhoud van de werk directory toe aan de staging area (of “index”) voor de volgende commit. Als het git commit commando wordt aangeroepen, kijkt het standaard alleen naar deze staging area, dus git add wordt gebruikt om de samenstelling van de volgende commit precies naar jouw eigen wens te bepalen.

Dit commando is een ongelofelijk belangrijk commando in Git en het wordt tientallen keren genoemd of gebruikt in dit boek. We zullen heel kort een aantal van de meer ongebruikelijke gebruiken benoemen die kunnen worden gevonden.

We hebben git add voor het eerst geïntroduceerd en in detail uitgelegd in “Nieuwe bestanden volgen (tracking)”.

We beschrijven hoe we het moeten gebruiken om merge conflicten op te lossen in “Eenvoudige merge conflicten”.

We behandelen het gebruik ervan om interactief alleen specifieke delen van een gewijzigde bestand te stagen in “Interactief stagen”.

Tot slot emuleren we het op een laag niveau in “Boom objecten (tree objects)”, zodat je een idee krijgt van wat het achter de schermen doet.

git status

Het git status commando laat je de verschillende stadia zien van bestanden in je werk directory en staging area. Welke bestanden er zijn gewijzigd en nog niet gestaged en welke er zijn gestaged maar nog niet gecommit. In zijn normale vorm, laat het je ook een aantal hints zien over hoe bestanden tussen deze stadia te verplaatsen.

We behandelen status voor het eerst in “De status van je bestanden controleren”, zowel in zijn basis en versimpelde vormen. Alhoewel we het door het hele boek heen gebruiken, wordt vrijwel alles wat je met het git status commando kunt doen daar behandeld.

git diff

Het git diff commando wordt gebruikt als je de verschillen wilt zien tussen elke twee trees. Dit kan het verschil zijn tussen je werk omgeving en je staging area (git diff op zichzelf), tussen je staging area en je laatste commit (git diff --staged), of tussen twee commits (git diff master branchB).

We kijken eerst naar de basis gebruiken van git diff in “Je staged en unstaged wijzigingen zien”, waar we laten zien hoe je kunt zien welke wijzigingen er zijn gestaged en welke nog niet.

We gebruiken het om te kijken of er mogelijke witruimte problemen zijn voor we committen met de --check optie in “Commit richtlijnen”.

We zien hoe we de verschillen tussen branches efficiënter kunnen controleren met de git diff A...B syntax in “Bepalen wat geïntroduceerd is geworden”.

We gebruiken het om de witruimte verschillen weg te filteren met -b en hoe de verschillende stadia van conflicterende bestanden te vergelijken met --theirs, --ours en --base in “Mergen voor gevorderden”.

En tot slot, gebruiken we het om efficiënt submodule wijzigingen te vergelijjken met --submodule in “Beginnen met submodules”.

git difftool

Het git difftool commando roept simpelweg een externe tool aan om je de verschillen te tonen tussen twee trees in het geval dat je iets anders wilt gebruiken dan het ingebouwde git diff commando.

We vermelden dit slechts kort in “Je staged en unstaged wijzigingen zien”.

git commit

Het git commit commando neemt alle bestandsinhoud die zijn gestaged met git add en slaat een nieuwe permanente snapshot in de database op en verplaatst daarna de branch verwijzer op de huidige branch ernaar.

We behandelen eerst de basis van committen in “Je wijzigingen committen”. Daar laten we ook zien hoe je de -a vlag kunt gebruiken om de git add stap over te slaan in de dagelijkse workflows en hoe je de -m vlag kunt gebruiken om een commit bericht uit de commando regel kunt doorgeven in plaats van een editor te laten opstarten.

In “Dingen ongedaan maken” behandelen we het gebruik van de --amend optie om de meest recente commit over te doen.

In “Branches in vogelvlucht”, gaan we met veel meer detail in op wat git commit doet en waarom het doet wat het doet.

We keken naar hoe commits cryptografisch te tekenen met de -S vlag in “Commits tekenen”.

Tot slot, nemen we een kijkje naar wat het git commit commando op de achtergrond doet en hoe het echt is geïmplementeerd in “Commit objecten”.

git reset

Het git reset commando is voornamelijk gebruikt om zaken terug te draaien, zoals je waarschijnlijk al kunt zien aan het werkwoord. Het verplaatst de HEAD verwijzing en verandert optioneel de index of staging area en kan optioneel ook de werk directory wijzigen als je --hard gebruikt. Deze laatste optie maakt het mogelijk met dit commando je werk te verliezen als je het niet juist gebruikt, dus verzeker je ervan dat je het goed begrijpt voordat je het gebruikt.

We hebben feitelijk het eenvoudigste gebruik van git reset in “Een gestaged bestand unstagen” behandeld, waar we het hebben gebruikt om een bestand te unstagen waar we git add op hadden gebruikt.

We behandelen het daarna in behoorlijk meer detail in “Reset ontrafeld”, die volledig is gewijd aan de uitleg van dit commando.

We gebruiken git reset --hard om een merge af te breken in “Een merge afbreken”, waar we ook git merge --abort gebruiken, wat een vorm van een wrapper is voor het git reset commando.

git rm

Het git rm commando wordt gebruikt om bestanden te verwijderen van de staging area en de werk directory voor Git. Het lijkt op git add in die zin dat het de verwijdering van een bestand staged voor de volgende commit.

We behandelen het git rm commando gedetailleerd in “Bestanden verwijderen”, inclusief het recursief verwijderen van bestanden en alleen bestanden verwijderen van de staging area en ze in de werk directory ongemoeid te laten met --cached.

Het enige andere alternatieve gebruik van git rm in het boek is in “Objecten verwijderen” waar we het even gebruiken en de --ignore-unmatch uitleggen als we git filter-branch aanroepen, wat ervoor zorgt dat we niet met een fout eindigen als het bestand die we proberen te verwijderen niet bestaat. Dit kan nuttig zijn bij het maken van scripts.

git mv

Het git mv commando is een kleine gemaks-commando om een bestand te verplaatsen en dan git add aan te roepen op het nieuwe bestand en git rm op het oude bestand.

We noemen dit commando heel kort in “Bestanden verplaatsen”.

git clean

Het git clean commando wordt gebruikt om ongewenste bestanden te verwijderen uit je werk directory. Dit zou het verwijderen van tijdelijke bouw-artefacten kunnen inhouden of merge conflict bestanden.

We hebben veel van de opties en scenario’s besproken waar je het clean commando zou kunnen gebruiken in “Je werk directory opschonen”.