Close

gitk

gitk est un navigateur de dépôt graphique, le premier de son genre. Il peut être considéré comme un encapsuleur graphique pour git log. Il permet d'explorer et de visualiser l'historique d'un dépôt. Il est écrit en tcl/tk, ce qui le rend portable sur tous les systèmes d'exploitation. gitk est mis à jour par Paul Mackerras en tant que projet indépendant et distinct du noyau Git. Des versions stables sont distribuées dans le cadre de la suite Git pour faciliter la tâche des utilisateurs finaux. gitk peut être un outil d'apprentissage utile pour les nouveaux venus dans Git.


Gitk overview


gitk peut être un outil d'apprentissage utile pour ceux qui découvrent le contrôle de version, ou ceux qui migrent depuis un autre système de contrôle de version comme Subversion. C'est un utilitaire pratique qui est fourni avec le noyau Git. Il fournit une interface utilisateur graphique qui aide à la visualisation de la mécanique interne de Git. D'autres interfaces graphiques Git populaires sont git-gui et Sourcetree d'Atlassian.

Utilisation


gitk est appelé de la même manière que la commande git log. L'exécution de la commande gitk lancera l'interface utilisateur de gitk qui ressemblera à ce qui suit :

Initial kopiera

Le volet supérieur gauche affiche les commits du dépôt, avec le plus récent en haut. Le volet inférieur droit affiche la liste des fichiers impactés par le commit sélectionné. Le panneau inférieur gauche affiche les informations du commit et le diff complet. En cliquant sur un fichier dans le volet inférieur droit, le diff dans le volet inférieur gauche se concentre sur la section concernée.

gitk reflétera l'état actuel du dépôt. Si l'état du dépôt est modifié par une utilisation indépendante de la ligne de commande comme le changement de branches, gitk devra être rechargé. gitk peut être rechargé par le menu Fichier -> Recharger.

Bases de données
Ressource connexe

Comment déplacer un dépôt Git complet

Logo Bitbucket
DÉCOUVRIR LA SOLUTION

Découvrir Git avec Bitbucket Cloud

Par défaut, gitk affichera l'historique actuel des commits. Il dispose d'une variété d'options de ligne de commande qui peuvent être transmises lors de l'initialisation. Ces options restreignent principalement la liste des commits affichés dans la vue supérieure de gitk. La forme générale d'exécution avec ces options de révision est la suivante :

Options


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

    <revision range>

Une plage de versions sous la forme « .. » peut être transmise pour afficher toutes les versions entre et . Une seule version peut également être transmise.

  <path>…

Limitez les commits à un chemin de fichier spécifique. Pour isoler les chemins des noms de version, utilisez « -- » afin de séparer les chemins des options précédentes.

--all

Affiche toutes les branches, tous les tags et toutes les réfs.

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

Permet d'afficher le rendu des commits plus récents que la date spécifiée.

    --until=<date>

Permet d'afficher le rendu des commits plus anciens que la date spécifiée.

    --date-order

Permet de trier les commits par date.

    --merge

Permet d'afficher les commits qui modifient les fichiers en conflit identifiés lors d'un merge.

    --left-right

Affiche des étiquettes informatives qui indiquent de quel côté d'un diff proviennent les commits. Les commits du côté gauche sont préfixés par un symbole < et ceux de droite, par un symbole >.

    --ancestry-path

Lorsqu'on lui donne une plage de commits à afficher (par exemple, commit1..commit2 ou commit2 commit1), affiche uniquement les commits qui existent directement sur la chaîne d'ascendance entre commit1 et commit2, c'est-à-dire les commits qui sont à la fois des descendants de commit1 et des ancêtres de commit2 (voir « Simplification de l'historique » dans git-log(1) pour une explication plus détaillée).

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

Des options puissantes qui vous permettent de suivre l'historique d'une plage de numéros de ligne de code donnée.

Discussion & examples


Afin de fournir une sortie utile, gitk a besoin d'un dépôt sous-jacent avec un historique commité. Le code suivant est une séquence de commandes bash qui créeront un dépôt avec deux branches qui comportent des commits et qui ont été mergées en une seule.

    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"

Ce dépôt de démo sera un bon exemple à explorer avec gitk. Cette séquence de commandes crée un dépôt avec 1 commit et un fichier index.txt. Appelons maintenant la commande gitk pour examiner le dépôt.

First commit

Can Gitk compare two commits?


Continuons avec notre dépôt de démo et créons maintenant un commit supplémentaire :

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

Une fois les commandes en cours exécutées, gitk devra être rechargé. Rechargez gitk à partir de la ligne de commande, ou utilisez l'interface graphique et accédez à Fichier -> Recharger. Une fois rechargé, nous devrions voir notre nouveau commit.

Next commit

Nous pouvons voir que la réf de la branche main pointe maintenant vers le nouveau commit. Pour comparer ces deux commits, nous utilisons le panneau d'historique en haut à gauche. Dans le panneau d'historique, cliquez sur un commit qui sera la base de la comparaison. Une fois le premier commit sélectionné, cliquez avec le bouton droit de la souris sur un deuxième commit pour ouvrir un menu contextuel.

Commit diff

Ce menu contextuel propose les options suivantes :

    Diff this -> selected
    Diff selected -> this

Lorsque vous sélectionnez l'une de ces options, une différence entre les deux commits apparaît dans le volet inférieur gauche, ce qui, dans notre exemple, ressemble à ceci :

Diff output

La sortie du diff nous montre que index.txt avait une nouvelle ligne « prepended content to index » entre les deux commits.

How to use Gitk to compare two branches


Continuons avec notre exemple de dépôt et créons une branche.

    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"

La séquence de commandes suivante créera une branche nommée new_branch et y ajoutera le fichier new_branch_file.txt. En outre, un nouveau contenu est ajouté au fichier index.txt, et un commit supplémentaire est effectué pour cette mise à jour. Nous avons maintenant une nouvelle branche qui a 2 commits d'avance sur main. Nous devons recharger gitk pour faire apparaître ces changements.

New branch

Discuter du mécanisme de création de branches dans Git est une excellente occasion pour apprendre. gitk affiche les commits sous la forme d'une séquence linéaire de commits. Le terme « branche » implique que nous devons nous attendre à une branche ou un fork dans la chronologie. Les branches dans Git sont différentes des autres systèmes de contrôle de version. Dans Git, une branche correspond à un pointeur vers un commit. Le pointeur se déplace vers les commits au fur et à mesure qu'ils sont créés. Lorsque vous créez une commande git branch, vous ne changez rien à la structure du dépôt ou de l'arborescence source. Vous créez simplement un pointeur.

Afin de comparer les commits qui diffèrent entre les deux branches, gitk doit être lancé avec une plage de révisions spécifiée. L'exécution de gitk main..new_branch ouvrira gitk avec uniquement les commits entre les deux réfs de branche.

Compare branch

Il s'agit d'un puissant utilitaire pour comparer des branches.

Différences entre gitk et Git Gui


Git Gui est une autre interface utilisateur graphique basée sur Tcl/Tk pour Git. Alors que gitk se concentre sur la navigation et la visualisation de l'historique d'un dépôt, Git Gui se concentre sur le perfectionnement de chaque commit, sur l'annotation d'un fichier unique et ne montre pas l'historique du projet. Git Gui fournit également des options de menu pour lancer gitk et explorer l'historique. Git Gui est également appelé en exécutant la commande git gui à partir de la ligne de commande.

Gitk summary


En conclusion, gitk est un encapsuleur d'interface graphique pour git log. Il est incroyablement puissant pour visualiser et explorer l'historique d'un dépôt. gitk est également un outil utile pour apprendre les mécanismes internes de Git.


Partager cet article
Thème suivant

Lectures recommandées

Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.

Des personnes qui collaborent à l'aide d'un mur rempli d'outils

Le blog Bitbucket

Illustration DevOps

Parcours de formation DevOps

Démos Des démos avec des partenaires d'Atlassian

Fonctionnement de Bitbucket Cloud avec Atlassian Open DevOps

Inscrivez-vous à notre newsletter DevOps

Thank you for signing up