GitK
Gitk es un navegador de repositorio gráfico. Fue el primero de este tipo. Se puede considerar como un contenedor de GUI para git log
. Es muy práctico para explorar y visualizar el historial de un repositorio. Está escrito en tcl/tk, lo que lo hace trasladable entre distintos sistemas operativos. Paul Mackerras mantiene Gitk
como un proyecto independiente, por separado del núcleo de Git. Dentro de la suite de Git se distribuyen versiones estables para la comodidad de los usuarios finales. Gitk puede ser práctico para el aprendizaje de los nuevos usuarios de Git.
Gitk overview
Gitk puede ser una práctica herramienta de aprendizaje para los usuarios nuevos en el control de versiones o para aquellos que están en transición desde otro sistema de control de versiones, como Subversion. Gitk es una utilidad que contiene el núcleo de Git. Proporciona una interfaz gráfica de usuario que ayuda a visualizar la mecánica interna de Git. Otras GUI populares para Git son git-gui y Sourcetree, esta última de Atlassian.
Uso
Gitk se invoca de manera similar a git log
. Al ejecutar el comando gitk
se lanzará la interfaz de usuario de Gitk, que tendrá un aspecto similar a este:
El panel superior izquierdo muestra las confirmaciones en el repositorio (la última, arriba). En la parte inferior derecha se muestra la lista de archivos afectados por la confirmación seleccionada. El panel inferior izquierdo muestra los detalles de la confirmación y la comparación de diferencias completa. Al hacer clic en un archivo en el panel inferior derecho, la comparación de diferencias del panel inferior izquierdo se centra en la sección correspondiente.
Gitk mostrará el estado actual del repositorio. Si el estado del repositorio se modifica con la línea de comandos por separado (por ejemplo, un cambio de ramas), será necesario volver a cargar Gitk. Gitk se puede volver a cargar en el menú File (Archivo) -> Reload (Volver a cargar).
Material relacionado
Cómo mover un repositorio de Git completo
VER LA SOLUCIÓN
Aprende a usar Git con Bitbucket Cloud
Por defecto, Gitk renderiza el historial actual de confirmaciones. Gitk tiene diversas opciones de línea de comandos que se pueden pasar en la inicialización. Estas opciones restringen principalmente la lista de confirmaciones renderizadas en la vista de nivel superior de Gitk. La forma general de ejecución con estas opciones de revisión es la siguiente:
Opciones
gitk [<options>] [<revision range>] [--] [<path>…]
<revision range>
Se puede pasar un rango de revisión con el formato "
para mostrar todas las revisiones entre
y
. También se puede pasar una sola revisión.
<path>…
Limita las confirmaciones a una ruta de archivo específica. Para aislar las rutas de los nombres de revisión, separa las rutas de cualquier opción anterior con "--".
--all
Muestra todas las ramas, etiquetas y referencias.
--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>
Renderiza las confirmaciones que son más recientes que la fecha especificada.
--until=<date>
Renderiza las confirmaciones que son anteriores a la fecha especificada.
--date-order
Ordena las confirmaciones por fecha.
--merge
Muestra las confirmaciones que modifican archivos en conflicto que se identificaron durante una fusión.
--left-right
Renderiza etiquetas informativas que indican de qué lado de una comparación de diferencias proceden las confirmaciones. Las confirmaciones de la izquierda tienen el símbolo < y las de la derecha, el símbolo >.
--ancestry-path
Cuando se tiene un rango de confirmaciones para mostrar (por ejemplo, commit1..commit2 o commit2 commit1
), solo se muestran las confirmaciones que existen directamente en la cadena de antecesoras entre commit1
y commit2
, es decir, confirmaciones que son descendientes de commit1
, y antecesoras de commit2
. Para ver una explicación más detallada, consulta "History simplification" (Simplificación del historial) en git-log(1)
.
L<start>,<end>:<file>
Son opciones eficaces para rastrear el historial de un rango de números de línea de código determinado.
Discussion & examples
Para proporcionar una salida utilizable, Gitk necesita un repositorio subyacente con un historial confirmado. El siguiente código es una secuencia de comandos bash que creará un nuevo repositorio con dos ramas que tienen confirmaciones y se han fusionado en una sola.
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"
Este repositorio de demostración será un buen ejemplo que explorar con Gitk. Esta secuencia de comandos crea un nuevo repositorio con una confirmación y un archivo index.txt
. Ahora vamos a invocar gitk
para examinar el repositorio.
Can Gitk compare two commits?
Continuando con nuestro repositorio de demostración, vamos a crear una confirmación adicional:
echo "prpended content to index" >> index.txt &&
git commit -am "prepended content to index"
Once the proceeding commands are executed, gitk
will need to be reloaded. Either reload gitk
from the command line or use the GUI and navigate to File -> Reload
. Once reloaded we should see our new commit
.
Podemos ver que la referencia de la rama main
ahora apunta a la nueva confirmación. Para comparar estas dos confirmaciones, usamos el panel de historial superior izquierdo. Dentro del panel de historial, haz clic en la confirmación que será la base de la comparación de diferencias. Una vez seleccionada, haz clic con el botón derecho en una segunda confirmación para abrir un menú contextual.
Este menú contextual proporcionará las siguientes opciones:
Diff this -> selected
Diff selected -> this
Al seleccionar una estas opciones, aparecerá una comparación de diferencias entre las dos confirmaciones en el panel inferior izquierdo, que en nuestro ejemplo se verá así:
La salida de la comparación de diferencias muestra que index.txt
tenía una nueva línea de "contenido antepuesto al índice" añadido entre las dos confirmaciones.
How to use Gitk to compare two branches
Continuando con nuestro repositorio de ejemplo, vamos a crear una nueva rama.
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 secuencia de comandos siguiente creará una nueva rama llamada new_branch
y le añadirá el archivo new_branch_file.txt
. Además, se añade contenido nuevo a index.txt
y se realiza una confirmación adicional para esa actualización. Ahora tenemos una nueva rama que está 2 confirmaciones por delante de la main. Debemos volver a cargar Gitk para que estos cambios se reflejen.
Es una gran oportunidad de aprendizaje para hablar sobre el mecanismo de creación de ramas de Git. Gitk muestra las confirmaciones como una secuencia en línea recta. El término "branch" implica que debemos esperar una "rama" o bifurcación en la línea de tiempo. Las ramas de Git son diferentes de otros sistemas de control de versiones. En Git, una rama es un puntero que apunta hacia una confirmación. El puntero se mueve a las confirmaciones a medida que se crean. Cuando creas una git branch
, no cambias nada en la estructura del repositorio o en el árbol de origen. Estás creando un nuevo puntero.
Para comparar las confirmaciones que difieren entre las 2 ramas, Gitk debe iniciarse con un rango de revisión determinado. Al ejecutar gitk main..new_branch
, Gitk solo se abrirá con las confirmaciones entre las dos referencias de rama.
Esta es una utilidad muy eficaz para comparar ramas.
Diferencias entre Gitk y Git Gui
Git Gui is another Tcl/Tk based graphical user interface to Git. Whereas Gitk focuses on navigating and visualizing the history of a repository, Git Gui focuses on refining individual commits
, single file annotation and does not show project history. Git Gui also supplies menu actions to launch Gitk for history exploration. Git Gui is also invoked from the command line by executing git gui
.
Gitk summary
En conclusión, Gitk es un contenedor de interfaz gráfica para git log
. Es muy eficaz para visualizar y explorar el historial de un repositorio. Además, es una herramienta útil para conocer los entresijos de Git.
Compartir este artículo
Tema siguiente
Lecturas recomendadas
Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.