Una interfaz de usuario de terminal simple para comandos de git
El mantenimiento de este proyecto es posible gracias a todos los contribuyentes y patrocinadores. Si desea patrocinar este proyecto y que su avatar o logotipo de la empresa aparezca debajo, haga clic aquí. ?
Hora de despotricar: lo has escuchado antes, git es poderoso , pero ¿de qué sirve ese poder cuando todo es tan difícil de hacer? ¿El cambio de base interactivo requiere que edites un maldito archivo TODO en tu editor? ¿Me estás tomando el pelo? Para preparar parte de un archivo, necesita usar un programa de línea de comandos para recorrer cada fragmento y, si un fragmento no se puede dividir más pero contiene código que no desea presentar, debe editar un archivo de parche arcano. a mano ? ¡¿Me estás tomando el pelo?! A veces te piden que guardes tus cambios cuando cambias de rama, solo para darte cuenta de que, después de cambiar y deshacer el almacenamiento, ni siquiera hubo ningún conflicto y hubiera estado bien simplemente verificar la rama directamente. ¡TIENES QUE ESTAR BROMEANDO!
Si eres un simple mortal como yo y estás cansado de escuchar lo poderoso que es git cuando en tu vida diaria es un dolor poderoso en tu trasero, lazygit podría ser para ti.
Lazygit no es mi trabajo de tiempo completo, pero es un trabajo considerable de medio tiempo, así que si quieres apoyar el proyecto, considera patrocinarme.
Presione la barra espaciadora en la línea seleccionada para prepararla, o presione v
para comenzar a seleccionar un rango de líneas. También puede presionar a
para seleccionar la totalidad del fragmento actual.
Presione i
para iniciar una rebase interactiva. Luego aplaste ( s
), arregle ( f
), suelte ( d
), edite ( e
), suba ( ctrl+i
) o baje ( ctrl+j
) cualquiera de las confirmaciones de TODO, antes de continuar con la rebase abriendo la rebase menú de opciones con m
luego seleccionando continue
.
También puede realizar cualquiera de estas acciones de forma única (por ejemplo, presionar s
en un compromiso para aplastarlo) sin iniciar explícitamente una rebase.
Esta demostración también usa Mayús+abajo para seleccionar una variedad de confirmaciones para mover y reparar.
Presione shift+c
en una confirmación para copiarlo y presione shift+v
para pegarlo (seleccionarlo).
Presione b
en la vista de confirmaciones para marcar una confirmación como buena/mala para comenzar una bisección de git.
Para cuando realmente quieras deshacerte de todo lo que aparece cuando ejecutas git status
(y sí, eso incluye submódulos sucios) al estilo kidpix, presiona shift+d
para abrir el menú de opciones de reinicio y luego selecciona la opción 'nuke'.
Al presionar shift+a
en cualquier confirmación, se modificará esa confirmación con los cambios actualmente preparados (ejecutando una rebase interactiva en segundo plano).
Puede filtrar una vista con /
. Aquí filtramos nuestra vista de ramas y luego presionamos enter
para ver sus confirmaciones.
Lazygit tiene un sistema de comando personalizado muy flexible. En este ejemplo, se define un comando personalizado que emula la acción de pago de sucursal incorporada.
Puede crear árboles de trabajo para tener varias ramas a la vez sin la necesidad de ocultarlas o crear confirmaciones WIP al cambiar entre ellas. Presione w
en la vista de ramas para crear un árbol de trabajo a partir de la rama seleccionada y cambiar a ella.
Puede crear un parche personalizado a partir de una confirmación anterior y luego eliminar el parche de la confirmación, dividir una nueva confirmación, aplicar el parche al revés al índice y más.
En este ejemplo tenemos un comentario redundante que queremos eliminar de una confirmación anterior. Presionamos
en la confirmación para ver sus archivos, luego
en un archivo para enfocar el parche, luego
para agregar la línea de comentario a nuestro parche personalizado y luego ctrl+p
para ver las opciones del parche personalizado. ; seleccionando eliminar el parche de la confirmación actual.
Obtenga más información en el tutorial mágico de Youtube de Rebase.
Supongamos que está en una rama de funciones que a su vez se bifurcó de la rama de desarrollo y ha decidido que preferiría bifurcarse de la rama maestra. Necesita una forma de cambiar la base solo de las confirmaciones de su rama de funciones. En esta demostración verificamos cuál fue la última confirmación en la rama de desarrollo, luego presionamos shift+b
para marcar esa confirmación como nuestra confirmación base, luego presionamos r
en la rama maestra para rebasearla, trayendo solo las confirmaciones de nuestra rama característica. Luego impulsamos nuestros cambios con shift+p
.
Puede deshacer la última acción presionando 'z' y rehacer con ctrl+z
. Aquí dejamos un par de confirmaciones y luego deshacemos las acciones. Deshacer utiliza el reflog que es específico para confirmaciones y ramas, por lo que no podemos deshacer cambios en el árbol de trabajo o en el alijo.
Más información
Al ver el gráfico de confirmación en una ventana ampliada (use +
y _
para cambiar los tamaños de las ventanas), se muestra el gráfico de confirmación. Los colores corresponden a los autores de las confirmaciones y, a medida que navega hacia abajo en el gráfico, se resaltan las confirmaciones principales de la confirmación seleccionada.
Si presiona shift+w
en una confirmación (o rama/ref), se abrirá un menú que le permitirá marcar esa confirmación para que cualquier otra confirmación que seleccione se diferencie de ella. Una vez que haya seleccionado la segunda confirmación, verá la diferencia en la vista principal y si presiona
verá los archivos de la diferencia. Puede presionar shift+w
para ver el menú de diferencias nuevamente y ver opciones como invertir la dirección de diferencias o salir del modo de diferencias. También puede salir del modo de diferenciación presionando
.
La mayoría de los paquetes anteriores son mantenidos por terceros, así que asegúrese de examinarlos usted mismo y confirmar que el mantenedor es una persona de apariencia confiable que asiste a juegos deportivos locales y retribuye a sus comunidades con barbacoas para recaudar fondos, etc.
Para Windows, Mac OS (10.12+) o Linux, puede descargar una versión binaria aquí.
Normalmente, la fórmula lazygit se puede encontrar en el núcleo de Homebrew, pero le sugerimos que toque nuestra fórmula para obtener la que se actualiza con frecuencia. También funciona con Linux.
Grifo:
brew install jesseduffield/lazygit/lazygit
Centro:
brew install lazygit
Última versión creada a partir de versiones de github. Grifo:
sudo port install lazygit
Los paquetes para Void Linux están disponibles en el repositorio de distribución
Siguen los últimos lanzamientos
sudo xbps-install -S lazygit
Puedes instalar lazygit
usando Scoop. Está en el cubo extras
:
# Add the extras bucket
scoop bucket add extras
# Install lazygit
scoop install lazygit
Los paquetes para Arch Linux están disponibles a través de pacman y AUR (Arch User Repository).
Hay dos paquetes. La estable que se compila con la última versión y la versión de git que se compila a partir de la confirmación más reciente.
sudo pacman -S lazygit
Las instrucciones sobre cómo instalar el contenido AUR se pueden encontrar aquí: https://wiki.archlinux.org/index.php/Arch_User_Repository
Los paquetes para Fedora/RHEL y CentOS Stream están disponibles a través de Copr (Cool Other Package Repo).
sudo dnf copr enable atim/lazygit -y
sudo dnf install lazygit
sudo eopkg install lazygit
LAZYGIT_VERSION= $( curl -s " https://api.github.com/repos/jesseduffield/lazygit/releases/latest " | grep -Po ' "tag_name": "vK[^"]* ' )
curl -Lo lazygit.tar.gz " https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_ ${LAZYGIT_VERSION} _Linux_x86_64.tar.gz "
tar xf lazygit.tar.gz lazygit
sudo install lazygit /usr/local/bin
Verifique la correcta instalación de lazygit:
lazygit --version
Funtoo Linux tiene un paquete lazygit autogenerado en dev-kit:
sudo emerge dev-vcs/lazygit
Lazygit no está (todavía) en el portage principal de Gentoo, sin embargo, hay un ebuild disponible en la superposición GURU
Puedes agregar la superposición a tu sistema e instalar lazygit como de costumbre:
sudo eselect repository enable guru
sudo emaint sync -r guru
sudo emerge dev-vcs/lazygit
El paquete lazygit está actualmente integrado en devel:languages:go/lazygit.
Para instalar lazygit en openSUSE Tumbleweed ejecute:
sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit
Para instalar lazygit en openSUSE Leap ejecute:
source /etc/os-release
sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/ $VERSION_ID /devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit
En NixOs, lazygit está empaquetado con nix y se distribuye a través de nixpkgs. Puedes probar el lazygit sin instalarlo con:
nix-shell -p lazygit
# or with flakes enabled
nix run nixpkgs#lazygit
O puede agregar lazygit a su configuración.nix en la sección Environment.systemPackages. Se pueden encontrar más detalles a través de la página de búsqueda de NixOs.
Lazygit se puede instalar en un entorno Flox de la siguiente manera.
flox install lazygit
Se pueden encontrar más detalles sobre Flox en su sitio web.
pkg install lazygit
apt install lazygit
Las versiones publicadas están disponibles para diferentes plataformas, consulte https://anaconda.org/conda-forge/lazygit
conda install -c conda-forge lazygit
go install github.com/jesseduffield/lazygit@latest
Tenga en cuenta: si recibe un error que indica que no se puede encontrar lazygit o no está definido, es posible que deba agregar ~/go/bin
a su $PATH (MacOS/Linux) o %HOME%gobin
(Windows) . No debe confundirse con C:Gobin
(que es para los archivos binarios de Go, no para aplicaciones como lazygit).
Puedes instalar lazygit
usando Chocolatey:
choco install lazygit
Puede instalar lazygit
usando el comando winget
en la Terminal de Windows con el siguiente comando:
winget install - e -- id = JesseDuffield.lazygit
Necesitarás instalar Go
git clone https://github.com/jesseduffield/lazygit.git
cd lazygit
go install
También puedes usar go run main.go
para compilar y ejecutar de una vez (juego de palabras definitivamente intencionado)
Llame lazygit
en su terminal dentro de un repositorio de git.
$ lazygit
Si lo desea, también puede agregar un alias para esto con echo "alias lg='lazygit'" >> ~/.zshrc
(o cualquier archivo rc que esté usando).
Puede consultar la lista de combinaciones de teclas aquí.
Si cambia los repositorios en lazygit y desea que su shell cambie el directorio a ese repositorio al salir de lazygit, agregue esto a su ~/.zshrc
(u otro archivo rc):
lg()
{
export LAZYGIT_NEW_DIR_FILE=~/.lazygit/newdir
lazygit "$@"
if [ -f $LAZYGIT_NEW_DIR_FILE ]; then
cd "$(cat $LAZYGIT_NEW_DIR_FILE)"
rm -f $LAZYGIT_NEW_DIR_FILE > /dev/null
fi
}
Luego, source ~/.zshrc
y de ahora en adelante, cuando llame lg
y salga, cambiará de directorio a lo que sea que estuviera dentro de lazygit. Para anular este comportamiento, puede salir usando shift+Q
en lugar de solo q
.
Ver los documentos
Consulte los documentos de configuración.
Ver los documentos
Si a lazygit le falta una característica, es muy probable que puedas implementarla tú mismo con un comando personalizado.
Ver los documentos
Lazygit es compatible con Gitflow si lo tienes instalado. Para comprender cómo funciona el modelo Gitflow, consulte la publicación original de Vincent Driessen que lo explica. Para ver las opciones de Gitflow desde Lazygit, presione i
desde la vista de ramas.
¡Nos encanta tu aporte! Consulte la guía de contribución. Para discusiones de los contribuyentes sobre cosas que no se discuten mejor aquí en el repositorio, únete al canal de discordia.
Mire este video que explica la creación de una pequeña característica en lazygit si quiere tener una idea de por dónde empezar.
Ejecute lazygit --debug
en una pestaña del terminal y lazygit --logs
en otra para ver el programa y su salida de registro uno al lado del otro
Si desea apoyar el desarrollo de lazygit, considere patrocinarme (github igualará todas las donaciones dólar por dólar durante 12 meses)
Si quieres ver lo que yo (Jesse) estoy haciendo en términos de desarrollo, sígueme en Twitter o visita mi blog.
Si descubre que lazygit no satisface sus requisitos, estos pueden ser más adecuados: