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:
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.
Zugehöriges Material
Verschieben eines vollständigen Git-Repositorys
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.
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.
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.
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:
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.
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.
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.