web-dev-qa-db-fra.com

Guide pour comprendre Gitk?

Je présente git à une équipe de développeurs et je trouve que gitk est un outil incroyable. C'est également assez difficile à comprendre, car la compréhension de gitk nécessite une compréhension à la fois de l'historique de git et de l'outil de visualisation lui-même.

Quelqu'un at-il de bonnes références à quelque chose comme un "guide du débutant pour l'histoire de git avec gitk"?

78
krosenvold

Je n'ai jamais rien vu de particulier pour gitk. Voici un coup d'oeil, d'un point de vue "comment ça marche". Connaître les commandes qui sont derrière tout (ou au moins généralement équivalentes) aide à apprendre à utiliser les outils de ligne de commande plus facilement et vous montre également où chercher dans la documentation pour mieux comprendre gitk!

Menu Fichier

Cela a quelque peu changé au cours des dernières versions majeures - je décris l'état actuel.

  • mise à jour et rechargement: c'est probablement la chose la plus déroutante. Reload rafraîchit tout comme si vous aviez recommencé le programme avec la même configuration. Cela signifie que si une branche a été supprimée/rebasée, si certains commits sont maintenant suspendus, vous ne les voyez plus. La mise à jour, en revanche, actualise toutes les informations, mais affiche toujours toutes les validations précédemment affichées. C'est une excellente chose à utiliser si vous rebasez et que vous voulez vous assurer que vous n'avez pas gâché - vous pouvez voir les versions originales et rebasées.

  • références: assez évidentes. Les références incluent les balises et les branches (qui peuvent être distantes). Vous pouvez les relire, et lister pour cliquer sur un particulier pour l'afficher dans l'historique.

Vues

Comme le dit page de manuel , gitk prend git-rev-list des options pour aider à spécifier quel historique doit être affiché. Celles-ci peuvent également être définies de manière interactive dans le menu "Affichage". La page de manuel est un excellent endroit pour trouver plus d'informations sur les façons de contrôler les vues (c'est principalement dans la section de limitation de validation). Si vous avez regardé git-log avant, vous en aurez vu beaucoup.

Aidez-moi

Il y a une liste de raccourcis clavier ici! Doux.

Menu contextuel

Cela présente plusieurs commandes git porcelain courantes, généralement dans un mode de fonctionnement commun/par défaut. Les répertorier vous aidera au moins à trouver la bonne documentation pour comprendre ce qu'ils font, si ce n'est déjà fait!

  • git-diff (Diff cette <-> sélectionné
  • git-format-patch (créer un patch)
  • git-tag (créer une balise)
  • git-diff-tree (écriture du commit dans un fichier, rarement utilisé)
  • git-branch
  • git-cherry-pick
  • git-reset (reset branch to here) Cela vous invite à choisir soft, mixed ou hard, avec un bref rappel de ce que chacun fait. Description plus longue sur la page de manuel, mais bien sûr, vous devez comprendre le concept de l'index pour vraiment l'obtenir.

Le "marquer un commit" et les commandes associées devraient être explicites à ce stade.

Dans le menu contextuel d'une branche, nous avons git-checkout et le -d (supprimer) le mode de git-branch.

Section centrale

  • ID SHA1: le hachage du commit actuel. Très utile pour copier/coller dans un terminal pour effectuer une action sur un commit donné que vous avez utilisé gitk pour trouver. Vous pouvez également coller des hachages ici.

  • Boutons avant/arrière, numéro de ligne ... évident!

  • Trouver! Les options ici sont à nouveau assez explicites, mais pour l'éducation de tout le monde, elles sont analogues aux paramètres git-log : "contenant" est --grep, "toucher les chemins" est les arguments, et ajouter/supprimer une chaîne est -S (pioche).

Volet message/diff

Ici, nous avons le message de validation avec la sortie de git-diff - c'est quelque chose comme l'utilisation de git-log -p, avec un petit plus:

  • "Branches" équivaut à git branch -a --contains=<commit>

  • "Précède"/"Suit" équivaut à git describe [--contains] <commit> ( git-décrire )

91
Cascabel

Voici une introduction à la visualisation de l'historique des branches dans gitk avec des captures d'écran.

http://lostechies.com/joshuaflanagan/2010/09/03/use-gitk-to-understand-git/

  1. Le volet supérieur gauche affiche la série de validations de ce référentiel, la plus récente en haut.
  2. Il y a eu trois commits, tous par Tony Stark.
  3. Le message de validation pour la validation la plus récente était "troisième validation"
  4. Il existe une seule branche locale, nommée "master", qui pointe vers le commit le plus récent
  5. Il existe une seule branche de référence distante: la branche "master" du référentiel distant nommée "Origin", elle pointe également sur le commit le plus récent
  6. Le point jaune à côté de la validation supérieure indique qu'il s'agit de l'instantané actuellement dans mon dossier de travail (appelé HEAD)
  7. J'ai mis en surbrillance le deuxième commit, pour que je puisse voir ses détails dans le volet inférieur
  8. Le commit SHA (identifiant unique, similaire au numéro de révision Subversion) du deuxième commit est
    3d024dd9e4a83d8c6a9a143a68b75d4b872115a6
  9. Le coin inférieur droit affiche la liste des fichiers impactés par le deuxième commit
  10. Le coin inférieur gauche affiche les détails de validation, y compris le diff complet
  11. Cliquer sur un fichier dans le volet inférieur droit fait défiler le diff dans le volet inférieur gauche jusqu'à la section correspondante 12.
23
idursun

Ce que les novices pourraient vraiment utiliser en termes de "combinaison de gitk et d'histoire" est une explication spécifique sur la façon de reconnaître ce qui s'est passé en regardant l'arborescence de gitk.

Pour autant que je suis arrivé - la bonne façon de regarder l'arbre est (bien sûr):

 1. each node is a commit
 2. ultimate parent is at the bottom
 3. direct child to a commit is the one that happened first in the same branch (no matter who did it)
 4. the node with 2 or more children indicates ... ?
 5. merge commit node has 2 parents.
 6. rebase is recognized ... ?

Des captures d'écran seraient également appréciées.

L'arbre représente en fait l'état actuel du référentiel. Ce qui serait formidable, c'est si nous pouvions dire ce qui s'est passé en regardant l'arborescence.

Merci

v.

3
tishma

La seule chose que je trouve utile à propos de l'interface gitk est la vue d'ensemble des branches Nice (colorées).

Si vous voulez un gui pour git, cochez TortoiseGit sur windows ou GitX sur Mac ou QGit sur linux.

1
Davy Landman