Close

GitK

Gitk ist ein grafischer Repository-Browser. Es war der erste seiner Art. Er kann als GUI-Wrapper für git log betrachtet werden und ist nützlich, um den Verlauf eines Repositorys zu erkunden und zu visualisieren. Er ist in tcl/tk geschrieben, wodurch er über Betriebssysteme hinweg portierbar ist. gitk wird von Paul Mackerras als unabhängiges, von Git Core getrenntes Projekt betreut. Stabile Versionen sind Teil der Git-Suite, um den Endbenutzern die Arbeit zu erleichtern. Gitk kann eine hilfreiche Lernhilfe für Git-Neulinge sein.


Gitk overview


Gitk kann ein hilfreiches Lernprogramm für Neulinge in der Versionskontrolle oder Umsteiger von einem anderen Versionskontrollsystem wie Subversion sein. Gitk ist ein Komfortdienstprogramm, das in Git Core enthalten ist. Es bietet eine grafische Benutzeroberfläche, die bei der Visualisierung der internen Mechanik von Git hilft. Andere beliebte Git-GUIs sind git-gui und Sourcetree von Atlassian.

Anwendung von "git rebase"


Gitk wird ähnlich wie git log aufgerufen. Wenn du den Befehl gitk ausführst, wird die Gitk-Benutzeroberfläche gestartet, die in etwa wie folgt aussieht:

Initial kopiera

Im oberen linken Bereich werden die Commits für das Repository angezeigt, wobei die neuesten Commits im Vordergrund stehen. Unten rechts wird die Liste der Dateien angezeigt, die vom ausgewählten Commit betroffen sind. Im unteren linken Bereich werden die Commit-Details und die vollständige Diff angezeigt. Wenn du unten rechts auf eine Datei klickst, wird die Diff im unteren linken Bereich auf den entsprechenden Abschnitt fokussiert.

Gitk spiegelt den aktuellen Status des Repositorys wider. Wenn der Repository-Status durch separate Befehlszeilenverwendung wie das Ändern von Branches modifiziert wird, muss Gitk neu geladen werden. Gitk kann im dem Menü "File -> Reload" (Datei -> Neu laden) neu geladen werden.

Datenbanken
Zugehöriges Material

Verschieben eines vollständigen Git-Repositorys

Bitbucket-Logo
Lösung anzeigen

Git kennenlernen mit Bitbucket Cloud

Standardmäßig rendert Gitk den aktuellen Verlauf der Commits. Gitk verfügt über eine Vielzahl von Befehlszeilenoptionen, die bei der Initialisierung weitergegeben werden können. Diese Optionen beschränken hauptsächlich die Liste der Commits, die auf der allgemeinen Gitk-Ansicht gerendert werden. Die allgemeine Ausführung mit diesen Revisionsoptionen ist wie folgt:

Optionen


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

    <revision range>

Ein Revisionsbereich in Form von "" kann übergeben werden, um alle Revisionen zwischen und anzuzeigen. Alternativ kann eine einzelne Revision übergeben werden.

  <path>…

Beschränke Commits auf einen bestimmten Dateipfad. Um Pfade von Revisionsnamen zu isolieren, verwende "--". Hiermit werden die Pfade von allen vorherigen Optionen separiert.

--all

Zeigt alle Branches, Tags, Referenzen

--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>

Rendert Commits aus dem Zeitraum nach dem angegebenen Datum

    --until=<date>

Rendert Commits aus dem Zeitraum vor dem angegebenen Datum

    --date-order

Sortiert Commits nach Datum

    --merge

Zeigt Commits an, die während eines Merge identifizierte, in Konflikt stehende Dateien ändern.

    --left-right

Rendert informative Labels, die angeben, von welcher Seite einer Diff die Commits stammen. Commits von links haben ein "<"-Präfix und jene von rechts ein ">"-Präfix.

    --ancestry-path

Wenn ein Bereich von anzuzeigenden Commits angegeben wird (z. B. commit1..commit2 oder commit2 commit1), werden nur Commits angezeigt, die direkt in der Vorgängerkette zwischen commit1 und commit2 existieren, d. h. Commits, die beide Abkömmlinge von commit1 und Vorgänger von commit2 sind. (Siehe "History simplification" (Vereinfachung des Verlaufs) in git-log(1) für eine detailliertere Erklärung.)

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

Leistungsstarke Optionen, mit denen du den Verlauf eines bestimmten Codezeilen-Nummernbereichs verfolgen kannst

Discussion & examples


Um brauchbare Ergebnisse zu liefern, benötigt Gitk ein zugrunde liegendes Repository mit committetem Verlauf. Der folgende Code ist eine Folge von Bash-Befehlen, die ein neues Repository mit zwei Branches erstellen, die Commits haben und zu einem gemergt wurden.

    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"

Dieses Demo-Repository ist gut geeignet für eine Erkundung mit Gitk. Die Befehlssequenz erstellt ein neues Repository mit einem Commit und einer Datei namens index.txt. Rufen wir nun gitk auf, um das Repository zu untersuchen.

First commit

Can Gitk compare two commits?


Fahren wir mit unserem Demo-Repository fort und erstellen jetzt einen zusätzlichen Commit:

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

Sobald die fortlaufenden Befehle ausgeführt wurden, muss gitk neu geladen werden. Lade entweder gitk von der Befehlszeile neu oder verwende die GUI und navigiere zu File -> Reload (Datei -> Neu laden). Nach dem erneuten Laden sollten wir unseren neuen Commit sehen.

Next commit

Wir können sehen, dass die main-Branch-Referenz jetzt auf den neuen Commit zeigt. Um diese beiden Commits zu vergleichen, verwenden wir das obere linke Verlaufsfenster. Klicke im Verlaufsfenster auf einen Commit, der die Basis des Diffs bildet. Nach der Auswahl klickst du mit der rechten Maustaste auf einen zweiten Commit, um ein Kontextmenü zu öffnen.

Commit diff

In diesem Kontextmenü findest du folgende Optionen:

    Diff this -> selected
    Diff selected -> this

Wenn du eine dieser Optionen auswählst, wird ein Unterschied zwischen den beiden Commits im unteren linken Bereich angezeigt, der in unserem Beispiel wie folgt aussieht:

Diff output

Die Diff-Ausgabe zeigt uns, dass zu index.txt zwischen den beiden Commits die neue Zeile "prepended content to index" hinzugefügt wurde.

How to use Gitk to compare two branches


Fahren wir mit unserem Beispiel-Repository fort und erstellen einen neuen Branch.

    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"

The proceeding command sequence will create a new branch named new_branch and add file new_branch_file.txt to it. Additionally, new content is added to index.txt and an additional commit is made for that update. We now have a new branch that is 2 commits ahead of main. We must reload Gitk to reflect these changes.

New branch

Dies ist eine großartige Gelegenheit, um den Branching-Mechanismus von Git zu besprechen. Gitk zeigt die Commits als geradlinige Folge von Commits an. Der Begriff Branch impliziert, dass wir in der Zeitleiste einen Branch oder einen Fork erwarten sollten. Git-Branches unterscheiden sich von anderen Versionskontrollsystemen. In Git ist ein Branch ein Zeiger auf einen Commit. Der Zeiger bewegt sich in Richtung eines Commits, während er erstellt wird. Wenn du einen git branch erstellst, änderst du nichts an der Struktur des Repositorys oder des Quellbaums. Du erstellst nur einen neuen Zeiger.

Um die Commits zu vergleichen, die sich zwischen den beiden Branches unterscheiden, muss Gitk mit einem bestimmten Revisionsbereich gestartet werden. Wenn du gitk main..new_branch ausführst, wird Gitk nur mit den Commits zwischen den beiden Branch-Referenzen geöffnet.

Compare branch

Dies ist ein leistungsstarkes Dienstprogramm zum Vergleichen von Branches.

Gitk vs. Git Gui


Git Gui ist eine weitere Tcl/Tk-basierte grafische Benutzeroberfläche für Git. Während Gitk sich auf die Navigation und Visualisierung des Verlaufs eines Repositorys konzentriert, setzt Git Gui den Fokus auf die Verfeinerung einzelner Commits und auf einzelne Dateianmerkungen und zeigt keinen Projektverlauf an. Git Gui bietet auch Menüaktionen, um Gitk zur Erkundung des Verlaufs zu starten. Git Gui wird auch von der Befehlszeile aus aufgerufen, indem git gui ausgeführt wird.

Gitk summary


Zusammenfassend ist Gitk ein GUI-Wrapper für git log. Gitk ist ausgesprochen nützlich für die Visualisierung und Erkundung eines Repository-Verlaufs. Darüber hinaus ist Gitk ein hilfreiches Tool zum Erlernen der Interna von Git.


Diesen Artikel teilen
Nächstes Thema

Lesenswert

Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.

Mitarbeiter arbeiten mit unzähligen Tools zusammen

Bitbucket-Blog

Abbildung: DevOps

DevOps-Lernpfad

Demo Den: Feature-Demos mit Atlassian-Experten

So funktioniert Bitbucket Cloud mit Atlassian Open DevOps

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up