1098 votes

La visualisation de la branche de la topologie dans git

Je suis en train de jouer avec git dans l'isolement sur ma propre machine, et même comme ça je trouve qu'il est difficile de maintenir un modèle mental de toutes mes branches et s'engage. Je sais que je peux faire un git log voir la validation de l'histoire de l'endroit où je suis, mais est-il possible de voir l'ensemble de la direction de la topographie, quelque chose comme ces ascii des cartes qui semblent être utilisés partout pour expliquer les branches?

      .-A---M---N---O---P
     /     /   /   /   /
    I     B   C   D   E
     \   /   /   /   /
      `-------------'

Il se sent juste comme quelqu'un de venir et d'essayer de récupérer mon dépôt aurait de la difficulté à travailler exactement ce qui se passait.

Je suppose que je suis influencé par AccuRev du flux de navigateur...

1324voto

jrockway Points 23734

git log --graph ou gitk. (Les deux aussi accepter --all, qui montrera toutes les branches au lieu de juste l'actuel.)

533voto

Pavel Shved Points 34706

J'ai l'habitude de l'utiliser

git log --graph --full-history --all --pretty=format:"%h%x09%d%x20%s"

Avec les couleurs (si votre shell est Bash):

git log --graph --full-history --all --color \
        --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s"

Cela permettra d'imprimer le texte de représentation comme ceci:

* 040cc7c       (HEAD, master) Mannual is NOT built by default
* a29ceb7       Removed offensive binary file that was compiled on my machine and was hence incompatible with other machines.
| * 901c7dd     (cvc3) cvc3 now configured before building
| * d9e8b5e     More sane Yices SMT solver caller
| | * 5b98a10   (nullvars) All uninitialized variables get zero inits
| |/
| * 1cad874     CFLAGS for cvc3 to work succesfully
| *   1579581   Merge branch 'llvm-inv' into cvc3
| |\
| | * a9a246b   nostaticalias option
| | * 73b91cc   Comment about aliases.
| | * 001b20a   Prints number of iteration and node.
| |/
|/|
| * 39d2638     Included header files to cvc3 sources
| * 266023b     Added cvc3 to blast infrastructure.
| * ac9eb10     Initial sources of cvc3-1.5
|/
* d642f88       Option -aliasstat, by default stats are suppressed

(Vous pouvez simplement utiliser git log --format=oneline, mais il sera en lien commettre des messages à des numéros, ce qui est moins joli à mon humble avis).

Pour faire un raccourci pour cette commande, vous souhaitez peut-être modifier votre ~/.gitconfig le fichier:

[alias]
  gr = log --graph --full-history --all --color --pretty=tformat:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s%x20%x1b[33m(%an)%x1b[0m"

Cependant, comme Sodel la Bruyante notes dans les commentaires, telles long de la commande mise en forme est difficile à mémoriser. Généralement, ce n'est pas un problème puisque vous pouvez la mettre dans l' ~/.gitconfig le fichier. Toutefois, si vous avez parfois pour se connecter à une machine distante où vous ne pouvez pas modifier le fichier de configuration, vous pouvez utiliser une solution plus simple mais plus rapide à taper version:

git log --graph --oneline

290voto

Andrew Points 1177

À l'une de ces recettes (basé sur git log ou gitk), vous pouvez ajouter --simplify-by-decoration à l'effondrement de la inintéressant linéaire parties de l'histoire. Cela fait beaucoup plus de la topologie visible à la fois. Je peux maintenant comprendre les grandes histoires qui serait incompréhensible sans cette option!

J'ai ressenti le besoin de poster ce parce que cela ne semble pas être aussi connu qu'il devrait l'être. Il n'apparaît pas dans la plupart des Débordement de Pile questions au sujet de la visualisation de l'histoire, et il m'a fallu un peu de recherche pour trouver, même après que j'ai su que je voulais! Je l'ai finalement trouvé dans ce rapport de bogue Debian. La première mention sur un Débordement de Pile semble être cette réponse par Antoine Pelisse.

85voto

checksum Points 985

Gitk parfois douloureux pour moi de lire.

enter image description here

Me motiver à écrire GitVersionTree.

enter image description here

45voto

VonC Points 414372

J'aime, git log, à faire:

 git log --graph --oneline --branches

(également avec l'option --tous, pour la visualisation à distance des branches)

Fonctionne avec les dernières versions Git: introduit depuis 1.6.3 (Thu, 7 Mai 2009)

  • "--pretty=<style>" pour le journal de la famille de commandes peuvent être orthographié comme "--format=<style>".
    En outre, --format=%formatstring est à court de main pour --pretty=tformat:%formatstring.

  • "--oneline" est un synonyme de "--pretty=oneline --abbrev-commit".

PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix
| | * 8183707 a first bug10 fix
| |/
| * e727105 a second evol for 2.0
| * 473d44e a main evol
|/
* b68c1f5 first evol, for making 1.0

Vous pouvez également limiter la durée de l'affichage (nombre de commits):

PS D:\git\tests\finalRepo> git log --graph --oneline --branches --all -5
* 4919b68 a second bug10 fix
* 3469e13 a first bug10 fix
* dbcc7aa a first legacy evolution
| * 55aac85 another main evol
| | * 47e6ee1 a second bug10 fix

(afficher que les 5 derniers commits)


Ce que je n'aime pas à propos de la sélection de la solution est:

 git log --graph

Il affiche beaucoup trop d'infos (quand j'ai envie de regarder un résumé rapide):

PS D:\git\tests\finalRepo> git log --graph
* commit 4919b681db93df82ead7ba6190eca6a49a9d82e7
| Author: VonC <vonc@laposte.net>
| Date:   Sat Nov 14 13:42:20 2009 +0100
|
|     a second bug10 fix
|
* commit 3469e13f8d0fadeac5fcb6f388aca69497fd08a9
| Author: VonC <vonc@laposte.net>
| Date:   Sat Nov 14 13:41:50 2009 +0100
|
|     a first bug10 fix
|

gitk est grande, mais qui m'oblige à quitter la session de shell pour l'autre fenêtre, tandis que d'afficher les derniers n engage rapidement est souvent suffisant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X