De geschiedenis van het project
De commit geschiedenis bekijken
Het eerste doel van Git is versiebeheer uitvoeren. Git houdt een geschiedenis bij van elke wijziging die wordt aangebracht in de broncode van een project. Dit maakt het gemakkelijk om eerdere versies van het project te herstellen, eventuele fouten op te sporen en om te gaan met mogelijke conflicten.
Met het git log
commando toon je alle commits die al gedaan zijn in die repository. De meest recente wijziging verschijnt bovenaan. Dit commando toont iedere commit met zijn SHA-1 checksum, de naam van de auteur en zijn e-mail, de datum van opslaan, en de commit boodschap.
Er bestaan heel wat argumenten die gebruikt kunnen worden bij het git log commando. Enkele vaak gebruikte zijn:
--oneline
: Dit argument geeft elke commit weer op één regel, wat handig kan zijn bij het bekijken van een groot aantal commits. De hash, auteur en commit-boodschap worden weergegeven op dezelfde regel.--graph
: Dit argument geeft een grafische weergave van de commits en branches in de repository, wat nuttig kan zijn om de ontwikkelingsgeschiedenis van het project te visualiseren.--author
: Dit argument toont alleen de commits die zijn gemaakt door de opgegeven auteur. Dit kan handig zijn om alleen de wijzigingen te bekijken die zijn aangebracht door een specifieke persoon. Bijvoorbeeld:--since
/--until
: Deze argumenten beperken het tijdsbereik van de commits die worden weergegeven.--since
toont alleen de commits die zijn uitgevoerd na de opgegeven datum, terwijl--until
alleen de commits toont die zijn uitgevoerd vóór de opgegeven datum. Bijvoorbeeld:--grep
: Dit argument zoekt naar commits waarin de opgegeven tekst voorkomt in de commit-boodschap.
Dit zijn slechts enkele van de vele argumenten die beschikbaar zijn bij het git log
commando. Andere argumenten, zoals --pretty
, --branches
, --tags
, en --format
, bieden meer flexibiliteit en controle over de output van het git log
commando.
Kloon de repo op https://github.com/schacon/simplegit-progit.git
Voer volgende commando's uit op deze repo en onderzoek het resultaat.
git log
met alle bovenstaande argumentengit log -p -2
git log --stat
git log --pretty=online
git log --pretty=format:"%h - %an, %ar : %s"
git log --pretty=format:"%h %s" --graph
git log --since=2.weeks
git log --since="20 years 1 day 3 minutes ago"
git log --since="2008-01-15"
Wijzigingen tonen
Het commando git diff
wordt gebruikt om de verschillen tussen twee broncodebestanden of tussen twee commits in een Git-repository te bekijken. Hiermee kan je wijzigingen tussen verschillende versies van bestanden vergelijken en controleren wat er in elke wijziging is veranderd.
Het git diff
commando kan worden gebruikt met verschillende argumenten om specifieke wijzigingen te bekijken. Enkele veelgebruikte argumenten zijn:
git diff [bestandsnaam]
: toont de verschillen zien tussen de versie in de working directory en de staging area.git diff --cached [bestandsnaam]
: toont de verschillen tussen de versie in de staging area en de laatste commit.git diff HEAD [bestandsnaam]
: toont de verschillen tussen de versie in de working directory en de laatste commit (combinatie van voorgaande twee dus)git diff [commit-code] [bestandsnaam]
: toont de verschillen tussen de versie in de working directory en de gekozen commit. De commit code kan metgit log
worden opgevraagd. De eerste 6 karakters volstaan.git diff [commit-code] [commit-code] [bestandsnaam]
: toont van een bepaald bestand de verschillen tussen twee bepaalde commits...
Het git diff
commando kan ook worden gebruikt met verschillende opties om de output aan te passen, zoals --name-only
om alleen de namen van gewijzigde bestanden te tonen of --word-diff
om de verschillen per woord weer te geven.
Kortom, het git diff
commando is een krachtig hulpmiddel om wijzigingen in broncodebestanden te vergelijken en te analyseren. Het is een essentieel onderdeel van Git dat helpt bij het beheren van wijzigingen in een Git-repository.
Bestanden terug brengen naar een bepaalde toestand
Het git checkout
commando kan op verschillende manieren worden gebruikt in Git, afhankelijk van de argumenten die eraan worden doorgegeven. In eerste instantie kunnen we dit commando gebruiken om een bestand terug te brengen naar de toestand dit het had bij een bepaalde commit. Er moet dus wel eerst een commit uitgevoerd zijn.
Enkele belangrijke argumenten zijn:
git checkout [bestandsnaam]
: verwijdert alle wijzigingen die uitgevoerd zijn sinds de laatste commit/git checkout [commit-code] [bestandsnaam]
: draait een bestand dat al meerdere keren werd gecommit, terug naar hoe het in een bepaalde commit zat. De commit code opvragen kan metgit log
.
Er bestaan nog heel wat mogelijkheden met dit commando, maar deze komen later aan bod wanneer nog wat andere principes van Git gezien zijn.
Oefeningen
Oefening1
Ga in CMD naar de map Pokemon project uit de vorige oefening.
Voeg een willekeurige regel tekst toe aan “Generation1.csv”.
Bekijk de status.
Volg het bestand “Generation1.csv” opnieuw.
Bekijk de verschillen tussen de huidige versie van “Generation1.csv” en die in de laatste commit. Probeer de output van “diff” uit te leggen.
Bekijk de verschillen in “Generation2.csv” tussen de eerste en de vierde versie.
Doe hetzelfde voor Generation4.csv tussen de tweede en de vijfde versie.
Verwijder (per ongeluk) “Generation1.csv”. Doe dit vanuit de verkenner of met het del commando.
Zet “Generation1.csv” terug uit de derde commit. (De commit met omschrijving "Eerste 5 Pokemon Gen1 toegevoegd".)
Controleer de inhoud opnieuw. Normaal zouden enkel de eerste vijf Pokemon toegevoegd moeten zijn en de willekeurige regel tekst die we daarnet toevoegden terug weg zijn.
Oefening 2
Maak een nieuwe map "Leerlingen TIC" aan en ga naar deze directory.
Maak Git-repository te maken in deze directory.
Kijk na of dit effectief gebeurd is. (Dit kan op 2 manieren geef ze allebei.)
Maak volgende bestanden aan: "Readme.md", "5TIC.csv", "6TIC.csv", "5 "ZwarteLijst.info"
Controleer de inhoud en de status van de map.
Zorg ervoor dat het bestand "ZwarteLijst.info" genegeerd wordt door Git en controleer of dit ook gebeurd is.
Voeg alle bestanden (behalve het genegeerde natuurlijk) toe aan de Staging Area en controleer of dit gebeurd is.
Commit de bestanden in de Staging Area met als omschrijving "Opstart project voltooid.". Controleer of dit gebeurd is.
Voeg de map "Leerlingen" toe en verplaats de bestanden "5TIC.csv" en 6TIC.csv". (Dit mag vanuit de verkenner gebeuren.)
Voeg de map "Leerlingen" toe aan de Staging Area. Controleer of dit gebeurd is. Kijk na of hierdoor ook de 2 bestanden toegevoegd zijn.
Maak een nieuwe commit met als omschrijving "Map Leerlingen aangemaakt.". En controleer de status. Je merkt nu dat de 2 verplaatste bestanden in de originele map als "deleted" voorkomen. Volg daarom deze bestanden niet langer en controleer de status opnieuw.
Voeg zowel aan "5TIC.csv" als aan "6TIC.csv" 2 leerlingen toe. Controleer daarna met het
git diff
commando de details van de wijzigingen.Voeg deze bestanden toe aan de Stating Area (je kan er ook voor kiezen de map toe te voegen).
Voeg 2 leerlingen toe aan ""5TIC.csv" en bekijk de status. Je merkt nu dat het bestand zowel wijzigingen in de Stagin Area heeft als in de Working Directory. Wat betekend dit als je de commit uitvoert?
Maak een nieuwe commit met als omschrijving "Extra Leerlingen toegevoegd." en bekijk de status opnieuw.
Geef een overzicht van alle commits die je tot nu toe gemaakt hebt. die je tot nu toe hebt gemaakt te zien.
Toon de verschillen tusen de eerste en de derde commit.
Verwijder het bestand "ZwarteLijst.info" maar gebruik hiervoor nu het Git commando! Bekijk daarna de inhoud van de map en de status opnieuw.
Verander de naam van het bestand "Readme.md" naar "Readme.txt"
Zorg ervoor dat alle aanpassingen gecommit zijn, bekijk de status en de verschillende commits.
Last updated