Estoy jugando con Git de forma aislada en mi propia máquina, y me resulta difícil mantener un modelo mental de todas mis ramas y compromisos. Sé que puedo hacer git log
para ver el historial de confirmación desde donde estoy, pero ¿hay alguna manera de ver toda la topografía de la rama, algo como estos mapas ASCII que parecen usarse en todas partes para explicar las ramas?
.-A---M---N---O---P
/ / / / /
I B C D E
\ / / / /
`-------------'
Se siente como si alguien viniera y tratara de recoger mi repositorio tendría dificultades para resolver exactamente lo que estaba sucediendo.
Supongo que estoy influenciado por el navegador de flujo de AccuRev ...
Respuestas:
Use
git log --graph
ogitk
. (Ambos también aceptan--all
, lo que mostrará todas las ramas en lugar de solo la actual).Para nombres de sucursales y una vista compacta, intente:
fuente
--all
opción y también etiqueta las confirmaciones. Tampoco vi en el menú desplegable que puede seleccionar todas las ramas allí.git log --graph --decorate --oneline
: muestra una confirmación por línea y decora con nombres de rama.--all
opción. ¡Muy útil!--simplify-by-decoration
opción.Yo suelo usar
Con colores (si su caparazón es Bash):
Esto imprimirá una representación basada en texto como esta:
(Podría usar
git log --format=oneline
, pero vinculará los mensajes de confirmación con los números, lo que se ve menos bonito en mi humilde opinión).Para crear un acceso directo para este comando, es posible que desee editar su
~/.gitconfig
archivo:Sin embargo, como Sodel the Vociferous señala en los comentarios, ese comando de formateo largo es difícil de memorizar. Por lo general, no es un problema, ya que puede incluirlo en el
~/.gitconfig
archivo. Sin embargo, si a veces tiene que iniciar sesión en una máquina remota donde no puede modificar el archivo de configuración, puede usar una versión más simple pero más rápida para escribir:fuente
--full-history
solo es relevante cuando se utiliza--simplify-by-decoration
o especifica una ruta de archivo.Tengo 3 alias (y 4 alias-alias para uso rápido) que normalmente incluyo en mi
~/.gitconfig
archivo:git lg
/ segit lg1
ve así:git lg2
Se ve como esto:y se
git lg3
ve así:Debe tenerse en cuenta que esto no pretende ser una solución final: es una plantilla que puede cambiar, agregar y arreglar a su gusto. Si desea utilizar estos, mi recomendación es:
.gitconfig
,.gitconfig
s en el futuro (o, alternativamente, controlar la versión de sus archivos de puntos, por supuesto) .Nota: La respuesta copiada y mejorada de la respuesta en stackoverflow.com/questions/1057564/pretty-git-branch-graphs ya que es mucho más apropiada aquí que allí. Dejó la copia en la otra pregunta por razones históricas: ahora está cerrada, y la respuesta está referenciada por un montón de otras respuestas.
fuente
%C(bold yellow)
con%C(auto)
por tener diferentes colores paraHEAD
, locales y sucursales remotas ( ref ).%w()
; de esta manera también puede ajustar correctamente los mensajes de confirmación más largos o de varias líneas sin desordenar el gráfico.--abbrev-commit
está ahí porque las líneas 2da-3ra están marcadas a mano con espacios, y quería asegurarme absolutamente de que usaría el SHA corto, así que es mejor prevenir que curar.--decorate
también está ahí porque, aunque los valores predeterminados de Git hacen lo mismo, eso podría configurarse de manera diferente o diferente en diferentes versiones de Git: para estos, absolutamente quiero decoración. En última instancia, los indicadores adicionales / redundantes no son malos aquí; esto va en un archivo; no es algo que escribes todo el tiempo.lg1
&lg2
que puede ver(origin/test_on_10.8)
mostrando la rama remota, y en lalg2
captura de pantalla puede Consulte(HEAD -> master, origin/master, origin/HEAD)
las posiciones locales y remotas de lamaster
sucursal yHEAD
. Esto coincide con las populares herramientas de GUI de visualización de ramas para Git do (gitk, SourceTree, TortoiseGit, Tower, Fork, GitX), aunque con un poco más de verbosidad (algunas herramientas de GUI usan códigos de colores) .Para cualquiera de estas recetas (basadas en git log o gitk), puede agregar
--simplify-by-decoration
para contraer las partes lineales poco interesantes de la historia. Esto hace que se vea mucho más de la topología a la vez. ¡Ahora puedo entender grandes historias que serían incomprensibles sin esta opción!Sentí la necesidad de publicar esto porque no parece ser tan conocido como debería ser. No aparece en la mayoría de las preguntas de Stack Overflow sobre la visualización del historial, y me llevó bastante buscarlo, ¡incluso después de saber que lo quería! Finalmente lo encontré en este informe de error de Debian . La primera mención en Stack Overflow parece ser esta respuesta de Antoine Pelisse.
fuente
--simplify-by-decoration
deja muy claro lo que está pasando.git log --graph --all --simplify-by-decoration
funciona igual de bien--simplify-by-decoration
mientras agregamos n commits antes / después de cada commit desocupado (like-B
y-A
forgrep
).Gitk
a veces me duele leerMotívame a escribir GitVersionTree .
fuente
El 99.999% de mi tiempo está mirando la historia por
git lg
y el 0.001% está porgit log
.Solo quiero compartir dos alias de registro que podrían ser útiles (configurar desde .gitconfig):
git lg
verá el historial actual de la sucursal.git hist
Verá toda la historia de la sucursal.fuente
Eche un vistazo a Gitkraken , una GUI multiplataforma que muestra la topología de manera lúcida.
Aquí hay un video tutorial rápido sobre algunas funciones avanzadas.
fuente
Me gusta, con
git log
, hacer:(también con --todos, para ver ramas remotas también)
Funciona con versiones recientes de Git: introducidas desde 1.6.3 ( jue, 7 de mayo de 2009 )
También puede limitar la duración de la visualización del registro (número de confirmaciones):
(mostrar solo los últimos 5 commits)
Lo que no me gusta de la solución seleccionada actual es:
Mostraba demasiada información (cuando solo quiero ver un resumen rápido):
gitk
es genial, pero me obliga a abandonar la sesión de shell para otra ventana, mientras que mostrar los últimos n commits rápidamente suele ser suficiente.fuente
Gitg es una gran herramienta para Linux, similar a Gitx para OS X. Simplemente ejecute 'gitg' en la línea de comando desde algún lugar dentro de la estructura de árbol de su repositorio (lo mismo con gitx).
fuente
gitg --all
, si desea evitar perder el tiempo en el menú desplegable.Encontré "git-big-picture" bastante útil: https://github.com/esc/git-big-picture
Crea bonitos gráficos 2D usando dot / graphviz en lugar de las vistas bastante lineales y "unidimensionales" que producen gitk y sus amigos. Con la opción -i, muestra los puntos de bifurcación y las confirmaciones de fusión, pero omite todo lo que está en el medio.
fuente
Una buena herramienta basada en la web es ungit . Se ejecuta en cualquier plataforma compatible con node.js & git. Hay un video de cómo funciona para aquellos que encuentran ese tipo de cosas más fácil que leer ...
fuente
Echa un vistazo a BranchMaster .
Lo escribí para visualizar una estructura de rama compleja, al contraer todas las confirmaciones entre ellas en una sola línea. Los números indican el número de confirmaciones.
fuente
Nadie mencionó
tig
? No dobla ramas como "BranchMaster", pero ...Es rápido, se ejecuta en la terminal.
Debido a que es tan rápido (+ control de teclado) obtienes una gran experiencia de usuario, es casi como mi "
ls
" para directorios que contienen repositorios git.https://jonas.github.io/tig/
Tiene los atajos habituales,
/
para buscar, etc.(ps. es el terminal en el fondo de esta captura de pantalla, se ve mejor hoy en día, pero mi computadora se niega a tomar una captura de pantalla, lo siento)
(pps. Yo también uso gitkraken y tiene visualizaciones muy claras, pero es mucho más pesado que
tig
)fuente
Tortoise Git tiene una herramienta llamada "Gráfico de revisión". Si estás en Windows es tan fácil como hacer clic derecho en tu repositorio -> Tortoise Git -> Revision Graph.
fuente
Risita dibuja gráficos muy bonitos.
fuente
Yo uso los siguientes alias.
Tiene más información en el esquema de color que los alias que vi arriba. También parece ser bastante común, por lo que puede tener la posibilidad de que exista en el entorno de otros o de que pueda mencionarlo en una conversación sin tener que explicarlo.
Con capturas de pantalla y una descripción completa aquí: http://blog.kfish.org/2010/04/git-lola.html
fuente
Para usuarios de Mac, realice el pago (sin juego de palabras) de la herramienta gratuita de código abierto GitUp: http://gitup.co/
Me gusta la forma en que se muestran los gráficos, es más claro que algunas de las otras herramientas que he visto.
El proyecto está aquí: https://github.com/git-up/GitUp
fuente
Tengo este
git log
alias~/.gitconfig
para ver el historial del gráfico:Con el alias en su lugar,
git l
mostrará algo como esto:En Git 2.12 + incluso puedes personalizar los colores de línea del gráfico usando la
log.graphColors
opción de configuración.En cuanto al formato de los registros, es similar
--oneline
, con la adición del nombre del autor (respetando.mailmap
) y la fecha relativa del autor . Tenga en cuenta que la%C(auto)
sintaxis, que le dice a Git que use los colores predeterminados para commit hash, etc., es compatible con Git> = 1.8.3 .fuente
Encontré esta publicación de blog que muestra una manera concisa:
Por lo general, creo un alias para el comando anterior:
y simple solo uso
gl
.También puede agregar el alias a la configuración de git. Abra
~/.gitconfig
y agregue la siguiente línea al [alias]y úsalo así:
git lg
fuente
Mi alias favorito personal, a través de .gitconfig, es:
fuente
Para aquellos que usan el editor de texto VSCode , considere la extensión Git History Extension de D. Jayamanne:
fuente
Gitx también es una herramienta de visualización fantástica si estás en OS X.
fuente
Otro comando de registro de git. Este con columnas de ancho fijo :
fuente
Echa un vistazo
SmartGit
. Me recuerda mucho a la visualización de la rama TortoiseHg y es gratis para uso no comercial.fuente
En Windows hay una herramienta muy útil que puedes usar: extensiones git. Es una herramienta gui y hace que las operaciones de git sean muy fáciles.
También es de código abierto.
http://gitextensions.github.io
fuente
Lo intenté
--simplify-by-decoration
pero no se muestran todas mis fusiones. Por lo tanto, simplemente elimino las líneas sin símbolos "\" y "/" en los encabezados, mientras que siempre mantengo líneas con "(" que indican ramas inmediatamente después de eso. Cuando se muestra el historial de ramas, en general no me interesan los comentarios de confirmación, así que También los elimino y termino con el siguiente alias de shell.fuente
¿podemos hacerlo más complicado?
¿Qué tal un simple registro de git?
fuente
El sitio oficial de Git alistó algunas herramientas GUI específicas de la plataforma de terceros. Pulse aquí Herramientas GUI de git para la plataforma Linux
He usado
gitg
yGitKraken
para la plataforma Linux. Ambos son buenos para entender el árbol de confirmaciónfuente