Uma UI de terminal simples para comandos git
A manutenção deste projeto é possibilitada por todos os colaboradores e patrocinadores. Se você gostaria de patrocinar este projeto e ter seu avatar ou logotipo da empresa aparecendo abaixo, clique aqui. ?
Hora do discurso: você já ouviu isso antes, git é poderoso , mas de que adianta esse poder quando tudo é tão difícil de fazer? O rebase interativo exige que você edite um maldito arquivo TODO em seu editor? Você está brincando comigo? Para preparar parte de um arquivo, você precisa usar um programa de linha de comando para percorrer cada pedaço e se um pedaço não puder ser mais dividido, mas contiver código que você não deseja preparar, você terá que editar um arquivo de patch misterioso à mão ? Você está brincando comigo?! Às vezes, você é solicitado a ocultar suas alterações ao trocar de branch, apenas para perceber que, depois de trocar e desfazer o stash, não houve nenhum conflito e seria bom apenas fazer o checkout do branch diretamente? VOCÊ DEVE ESTAR BRINCANDO COMIGO!
Se você é um mero mortal como eu e está cansado de ouvir o quão poderoso é o git quando em sua vida diária é um grande pé no saco, o preguiçoso pode ser para você.
Lazygit não é meu trabalho de tempo integral, mas é um trabalho pesado de meio período, então se você quiser apoiar o projeto, considere me patrocinar
Pressione espaço na linha selecionada para prepará-la ou pressione v
para começar a selecionar um intervalo de linhas. Você também pode pressionar a
para selecionar todo o pedaço atual.
Pressione i
para iniciar um rebase interativo. Em seguida, squash ( s
), fixup ( f
), drop ( d
), edit ( e
), mover para cima ( ctrl+i
) ou mover para baixo ( ctrl+j
) qualquer um dos commits TODO, antes de continuar o rebase trazendo o rebase menu de opções com m
e selecionando continue
.
Você também pode executar qualquer uma dessas ações uma vez (por exemplo, pressionando s
em um commit para esmagá-lo) sem iniciar explicitamente um rebase.
Esta demonstração também usa shift+down para selecionar uma série de commits para mover e corrigir.
Pressione shift+c
em um commit para copiá-lo e pressione shift+v
para colá-lo (escolher a dedo).
Pressione b
na visualização de commits para marcar um commit como bom/ruim para iniciar uma bissecção do git.
Para quando você realmente deseja se livrar de qualquer coisa que aparece quando você executa git status
(e sim, isso inclui submódulos sujos) no estilo kidpix, pressione shift+d
para abrir o menu de opções de redefinição e selecione a opção 'nuke'.
Pressionar shift+a
em qualquer commit irá alterar esse commit com as alterações atualmente preparadas (executando um rebase interativo em segundo plano).
Você pode filtrar uma visualização com /
. Aqui filtramos a visualização de nossas ramificações e, em seguida, pressionamos enter
para visualizar seus commits.
Lazygit possui um sistema de comando personalizado muito flexível. Neste exemplo, é definido um comando personalizado que emula a ação de checkout de ramificação integrada.
Você pode criar árvores de trabalho para ter várias ramificações ao mesmo tempo, sem a necessidade de armazenamento ou criação de commits WIP ao alternar entre elas. Pressione w
na visualização de ramificações para criar uma árvore de trabalho a partir da ramificação selecionada e alternar para ela.
Você pode criar um patch personalizado a partir de um commit antigo e, em seguida, remover o patch do commit, dividir um novo commit, aplicar o patch ao contrário no índice e muito mais.
Neste exemplo temos um comentário redundante que queremos remover de um commit antigo. Pressionamos
no commit para visualizar seus arquivos, então
em um arquivo para focar o patch, então
para adicionar a linha de comentário ao nosso patch personalizado e então ctrl+p
para visualizar as opções de patch personalizado ; selecionando remover o patch do commit atual.
Saiba mais no tutorial mágico do Rebase no YouTube.
Digamos que você esteja em um branch de recursos que foi ramificado do branch de desenvolvimento e decidiu que prefere ramificar o branch master. Você precisa de uma maneira de rebase apenas os commits do seu branch de recurso. Nesta demonstração, verificamos qual foi o último commit no branch de desenvolvimento, depois pressionamos shift+b
para marcar esse commit como nosso commit base e, em seguida, pressionamos r
no branch master para fazer o rebase nele, trazendo apenas os commits do nosso commit. ramo de recursos. Em seguida, enviamos nossas alterações com shift+p
.
Você pode desfazer a última ação pressionando 'z' e refazer com ctrl+z
. Aqui descartamos alguns commits e depois desfazemos as ações. Desfazer usa o reflog que é específico para commits e ramificações, portanto não podemos desfazer alterações na árvore de trabalho ou no stash.
Mais informações
Ao visualizar o gráfico de commit em uma janela ampliada (use +
e _
para alternar os tamanhos das janelas), o gráfico de commit é mostrado. As cores correspondem aos autores do commit e conforme você navega pelo gráfico, os commits pais do commit selecionado são destacados.
Se você pressionar shift+w
em um commit (ou branch/ref), um menu será aberto permitindo que você marque esse commit para que qualquer outro commit que você selecionar seja comparado a ele. Depois de selecionar o segundo commit, você verá o diff na visualização principal e se pressionar
verá os arquivos do diff. Você pode pressionar shift+w
para visualizar o menu de comparação novamente e ver opções como reverter a direção do diferencial ou sair do modo de comparação. Você também pode sair do modo diff pressionando
.
A maioria dos pacotes acima são mantidos por terceiros, portanto, certifique-se de examiná-los você mesmo e confirmar se o mantenedor é uma pessoa de aparência confiável, que participa de jogos esportivos locais e retribui às suas comunidades com churrascos para arrecadação de fundos, etc.
Para Windows, Mac OS (10.12+) ou Linux, você pode baixar uma versão binária aqui.
Normalmente, a fórmula do lazygit pode ser encontrada no núcleo do Homebrew, mas sugerimos que você toque em nossa fórmula para obter a atualizada com frequência. Também funciona com Linux.
Tocar:
brew install jesseduffield/lazygit/lazygit
Essencial:
brew install lazygit
Versão mais recente criada a partir de lançamentos do github. Tocar:
sudo port install lazygit
Pacotes para Void Linux estão disponíveis no repositório da distribuição
Eles acompanham os últimos lançamentos do upstream
sudo xbps-install -S lazygit
Você pode instalar lazygit
usando o scoop. Está no balde extras
:
# Add the extras bucket
scoop bucket add extras
# Install lazygit
scoop install lazygit
Pacotes para Arch Linux estão disponíveis via pacman e AUR (Arch User Repository).
Existem dois pacotes. O estável que é construído com a versão mais recente e a versão git que é construída a partir do commit mais recente.
sudo pacman -S lazygit
Instruções sobre como instalar o conteúdo AUR podem ser encontradas aqui: https://wiki.archlinux.org/index.php/Arch_User_Repository
Pacotes para Fedora/RHEL e CentOS Stream estão disponíveis via 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 a instalação correta do lazygit:
lazygit --version
Funtoo Linux tem um pacote lazygit gerado automaticamente no dev-kit:
sudo emerge dev-vcs/lazygit
Lazygit (ainda) não está no portage principal do Gentoo, porém um ebuild está disponível na sobreposição do GURU
Você pode adicionar a sobreposição ao seu sistema e instalar o lazygit normalmente:
sudo eselect repository enable guru
sudo emaint sync -r guru
sudo emerge dev-vcs/lazygit
O pacote lazygit está atualmente compilado em devel:languages:go/lazygit.
Para instalar o lazygit no openSUSE Tumbleweed, execute:
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 o lazygit no openSUSE Leap, execute:
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
No NixOs, o lazygit é empacotado com o nix e distribuído via nixpkgs. Você pode experimentar o lazygit sem instalá-lo com:
nix-shell -p lazygit
# or with flakes enabled
nix run nixpkgs#lazygit
Ou você pode adicionar o lazygit ao seu arquivo configuration.nix na seção Environment.systemPackages. Mais detalhes podem ser encontrados na página de pesquisa do NixOs.
O Lazygit pode ser instalado em um ambiente Flox da seguinte maneira.
flox install lazygit
Mais detalhes sobre o Flox podem ser encontrados em seu site.
pkg install lazygit
apt install lazygit
Versões lançadas estão disponíveis para diferentes plataformas, consulte https://anaconda.org/conda-forge/lazygit
conda install -c conda-forge lazygit
go install github.com/jesseduffield/lazygit@latest
Observação: se você receber um erro alegando que o lazygit não pode ser encontrado ou não está definido, pode ser necessário adicionar ~/go/bin
ao seu $PATH (MacOS/Linux) ou %HOME%gobin
(Windows) . Não deve ser confundido com C:Gobin
(que é para os próprios binários do Go, não para aplicativos como o lazygit).
Você pode instalar lazygit
usando Chocolatey:
choco install lazygit
Você pode instalar lazygit
usando o comando winget
no Terminal do Windows com o seguinte comando:
winget install - e -- id = JesseDuffield.lazygit
Você precisará instalar o Go
git clone https://github.com/jesseduffield/lazygit.git
cd lazygit
go install
Você também pode usar go run main.go
para compilar e executar de uma só vez (trocadilho definitivamente intencional)
Chame lazygit
no seu terminal dentro de um repositório git.
$ lazygit
Se desejar, você também pode adicionar um alias para isso com echo "alias lg='lazygit'" >> ~/.zshrc
(ou qualquer arquivo rc que você esteja usando).
Você pode verificar a lista de atalhos de teclado aqui.
Se você alterar os repositórios no preguiçoso e quiser que seu shell mude o diretório para esse repositório ao sair do preguiçoso, adicione isto ao seu ~/.zshrc
(ou outro arquivo 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
}
Então source ~/.zshrc
e de agora em diante, quando você ligar lg
e sair, você mudará os diretórios para o que quer que esteja dentro do lazygit. Para substituir esse comportamento, você pode sair usando shift+Q
em vez de apenas q
.
Veja os documentos
Confira os documentos de configuração.
Veja os documentos
Se estiver faltando um recurso no preguiçosogit, há uma boa chance de você mesmo implementá-lo com um comando personalizado!
Veja os documentos
Lazygit suporta Gitflow se você o tiver instalado. Para entender como funciona o modelo Gitflow, confira a postagem original de Vincent Driessen explicando-o. Para visualizar as opções do Gitflow no Lazygit, pressione i
na visualização de ramificações.
Adoramos sua contribuição! Por favor, verifique o guia de contribuição. Para discussões de contribuidores sobre coisas que não são melhor discutidas aqui no repositório, junte-se ao canal discord
Confira este vídeo explicando a criação de um pequeno recurso no preguiçoso se você quiser ter uma ideia de por onde começar.
Execute lazygit --debug
em uma guia do terminal e lazygit --logs
em outra para visualizar o programa e sua saída de log lado a lado
Se você gostaria de apoiar o desenvolvimento do lazygit, considere me patrocinar (o github está igualando todas as doações dólar por dólar por 12 meses)
Se você quiser ver o que eu (Jesse) estou fazendo em termos de desenvolvimento, siga-me no twitter ou confira meu blog
Se você achar que o lazygit não atende aos seus requisitos, estes podem ser mais adequados: