Close

Gitk

Gitk is een grafische repositorybrowser. Deze was de eerste in zijn soort. Gitk kan worden gezien als een GUI-schil voor git log. Deze is nuttig om de geschiedenis van een repository te verkennen en te visualiseren. Gitk is geschreven in tcl/tk, waardoor het overdraagbaar is naar alle besturingssystemen. gitk wordt door Paul Mackerras onderhouden als een onafhankelijk project, los van de Git core. Voor het gemak van eindgebruikers worden stabiele versies gedistribueerd als onderdeel van de Git-suite. Git kan een nuttig leermiddel zijn voor nieuwkomers bij Git.


Gitk overview


Gitk kan een nuttig leermiddel zijn voor mensen die nieuw zijn op het gebied van versiebeheer, of voor mensen die overstappen van een ander versiebeheersysteem zoals Subversion. Gitk is een handig hulpprogramma dat is inbegrepen bij Git core. Het biedt een grafische gebruikersinterface die helpt bij het visualiseren van de interne werking van Git. Andere populaire grafische Git-interfaces zijn git-gui en Atlassians eigen Sourcetree.

Gebruik


Gitk wordt op dezelfde manier aangeroepen als git log. Als je de opdracht gitk uitvoert, wordt de Gitk UI gestart, die er ongeveer als volgt uitziet:

Initial kopiera

In het venster linksboven worden de commits naar de repository weergegeven, met de meest recente informatie bovenaan. Rechtsonder wordt de lijst weergegeven met bestanden waarop de geselecteerde commit van invloed is. In het venster linksonder worden de details van de commit en de volledige diff weergegeven. Als je in het venster rechtsonder op een bestand klikt, wordt de diff in het paneel linksonder op de relevante sectie gericht.

Gitk geeft de huidige status van de repository weer. Als de status van de repository wordt gewijzigd door afzonderlijk gebruik via de opdrachtregel, zoals het wijzigen van branches, moet Gitk opnieuw worden geladen. Gitk kan opnieuw worden geladen via het menu File -> Reload.

Databases
gerelateerd materiaal

Een volledige Git-repository verplaatsen

Logo Bitbucket
Oplossing bekijken

Git leren met Bitbucket Cloud

Gitk geeft standaard de huidige geschiedenis van commits weer. Gitk heeft verschillende opdrachtregelopties die kunnen worden doorgegeven bij de initialisatie. Deze opties beperken in de eerste plaats de lijst van gemaakte commits tot de weergave op het hoogste niveau van Gitk. De algemene uitvoeringsvorm met deze revisieopties is als volgt:

Opties


    gitk [<options>] [<revision range>] [--] [<path>…]

    <revision range>

Een revisiebereik in de vorm '..' kan worden doorgegeven om alle revisies tussen en to weer te geven. Ook kan één revisie worden doorgegeven.

  <path>…

Beperkt commits tot een specifiek bestandspad. Om paden te isoleren van revisienamen, gebruik je '--' om de paden te scheiden van eventuele voorgaande opties.

--all

Toont alle branches, tags en referenties.

--branches[=<pattern>] --tags[=<pattern>] --remotes[=<pattern>]

Displays the selected item (branches, tags, remotes) as if they were mainline commits. When <pattern> is passed, further limits refs to ones matching the specified pattern

    --since=<date>

Geeft commits weer die recenter zijn dan de opgegeven datum.

    --until=<date>

Geeft commits weer die ouder zijn dan de opgegeven datum.

    --date-order

Sorteert commits op datum.

    --merge

Toont commits die conflicterende bestanden wijzigen die zijn geïdentificeerd tijdens een merge

    --left-right

Geeft informatieve labels weer die aangeven van welke kant diff commits afkomstig zijn. Commits vanaf de linkerkant worden voorafgegaan door een < symbool en commits van de rechterkant door een > symbool.

    --ancestry-path

Met een reeks weer te geven commits (bijv. commit1..commit2 or commit2 commit1), worden alleen commits weergegeven die direct in de stamboomketen tussen commit1 en commit2 voorkomen, d.w.z. commits die zowel afstammelingen zijn van commit1 als voorouders van commit2. (Zie 'Vereenvoudiging van geschiedenis' in git-log(1) voor een gedetailleerdere uitleg.)

L<start>,<end>:<file>

Krachtige opties waarmee je de geschiedenis van een bepaald bereik aan coderegelnummers kunt traceren.

Discussion & examples


Om waardevolle resultaten te kunnen leveren, heeft Gitk een onderliggende repository nodig met een gecommitte geschiedenis. De volgende code is een reeks bash-opdrachten waarmee een nieuwe repo wordt aangemaakt met twee branches die commits hebben en zijn samengevoegd tot één branche.

    mkdir gitkdemo &&
    cd gitkdemo &&
    git init . &&
    echo "hello world" > index.txt &&
    git add index.txt &&
    git commit -m "added index.txt with hello world content"

Deze demo-repository is een goed voorbeeld om met Gitk te verkennen. Deze opdrachtreeks creëert een nieuwe repo met 1 commit en een index.txt-bestand. Laten we nu Gitk aanroepen om de repo te onderzoeken.

First commit

Can Gitk compare two commits?


Als we doorgaan met onze demo-repository, kunnen we nu een extra commit aanmaken:

 echo "prpended content to index" >> index.txt &&
    git commit -am "prepended content to index"

Zodra de volgende opdrachten zijn uitgevoerd, moet gitk opnieuw worden geladen. Laad gitk opnieuw vanaf de opdrachtregel of met de GUI en ga naar File -> Reload. Eenmaal herladen zouden we onze nieuwe commit moeten zien.

Next commit

We kunnen zien dat de referentie van de main-branch nu naar de nieuwe commit verwijst. Om deze twee commits te vergelijken gebruiken we het geschiedenispaneel linksboven. Klik in het geschiedenispaneel op een commit die de basis van de diff gaat vormen. Eenmaal geselecteerd, klik je met de rechtermuisknop op een tweede commit om een contextmenu te openen.

Commit diff

Dit contextmenu biedt de volgende opties

    Diff this -> selected
    Diff selected -> this

Als je een van deze opties selecteert, verschijnt er een diff (verschil) tussen de twee commits in het paneel linksonder, wat er in ons voorbeeld als volgt uitziet:

Diff output

De diff-uitvoer laat zien dat index.txt tussen de twee commits een nieuwe regel met 'prepended content to index' bevat.

How to use Gitk to compare two branches


Laten we verder gaan met onze voorbeeld-repo en een nieuwe branch aanmaken.

    git checkout -b new_branch &&
    echo "new branch content" > new_branch_file.txt &&
    git add new_branch_file.txt &&
    git commit -m "new branch commit with new file and prepended content" &&
    echo "new branch index update" >> index.txt &&
    git commit -am "new branch commit to index.txt with new content"

Met de volgende opdrachtenreeks wordt een nieuwe branch aangemaakt met de naam new_branch en wordt het bestand new_branch_file.txt eraan toegevoegd. Daarnaast is er nieuwe inhoud toegevoegd aan index.txt en is er een extra commit gemaakt voor die update. We hebben nu een nieuwe branch die twee commits verder is dan de hoofdbranch. We moeten Gitk opnieuw laden om deze wijzigingen weer te geven.

New branch

Dit is een geweldige gelegenheid om het branchingmechanisme van Git te bespreken. Gitk geeft de commits weer als een rechte reeks commits. De term branch impliceert dat we een 'branch' of vertakking in de tijdlijn mogen verwachten. Git-branches zijn anders dan andere versiebeheersystemen. In Git is een branch een pointer naar een commit. De pointer wordt naar commits verplaatst terwijl ze worden aangemaakt. Wanneer je een git-branch aanmaakt, verander je niets in de structuur van de repository of de bronstructuur. Je creëert alleen maar een nieuwe pointer.

Om de commits te kunnen vergelijken die tussen de twee branches verschillen, moet Gitk worden gestart met een gespecificeerd revisiebereik. Wanneer gitk main..new_branch wordt uitgevoerd, wordt Gitk geopend met alleen de commits tussen de twee branch-refs

Compare branch

Dit is een krachtig hulpmiddel om branches te vergelijken.

Gitk vs. Git Gui


Git Gui is een andere op Tcl/Tk gebaseerde grafische gebruikersinterface voor Git. Waar Gitk zich richt op het navigeren en visualiseren van de geschiedenis van een repository, richt Git Gui zich op het verfijnen van individuele commits, het annoteren van afzonderlijke bestanden en toont deze geen projectgeschiedenis. Git Gui biedt ook menuacties om Git te starten voor een verkenning van de geschiedenis. Git Gui wordt ook aangeroepen vanaf de opdrachtregel door git gui uit te voeren.

Gitk summary


Kortom, Gitk is een grafische interface-schil voor git log. Gitk is ongelooflijk krachtig voor het visualiseren en verkennen van de geschiedenis van een repository. Gitk is ook een nuttig hulpmiddel om de interne aspecten van Git te leren kennen.


Deel dit artikel
Volgend onderwerp

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Mensen die samenwerken met een muur vol tools

Bitbucket-blog

Toelichting DevOps

DevOps-leertraject

Demo Den Feature-demo's met Atlassian-experts

Hoe Bitbucket Cloud werkt met Atlassian Open DevOps

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up