Dia 26: Fugitive
Fugitive é um plugin pra VIM pra gerenciar um repositório do Git.
Como git é, basicamente, um storage de arquivos, e o VIM é um editor de arquivos, os dois se encaixam bem ainda.
Para instalar o Fugitive, vocês devem adicionar no vimrc:
Plugin 'tpope/vim-fugitive'
Depois de instalado, vocês podem usar o seguinte:
:Gw
ao invés de:w
para salvar arquivos; com isto, ao mesmo tempo em que o VIM salva o arquivo em disco, já adiciona as alterações no index.:Gcommit
faz um commit com os arquivos que estão no index.:Gpush
para fazer push dos commits locals para o servidor remoto. Este comando é idêntico ao comando "git push" e aceita os mesmos parâmetros. O único problema deste comando é que ele não consegue lidar bem com servidores que pedem autenticação.:Gdiff
vai mostrar as diferenças entre o arquivo atual e o que está no repositório.:Gblame
vai mostrar quem mexeu em casa linha do arquivo atual.E, finalmente,
:Gstatus
vai mostrar todas as alterações entre o diretório atual e o repositório.
:Gstatus
tem algumas peculiaridades, no entanto:
Dentro do Gstatus, vocês vão poder ver quais arquivos foram alterados, quais estão no index e, interessantemente, vocês podem transferir alterações pro index ou tirar do index e ainda fazer commit.
Para adicionar ou remover um arquivo do index, é só usar [-]
.
Só cuidem que a mensagem de "Está no index" e "Não está no index" é bem parecida, dae dá a impressão que não tem nada acontecendo. Leiam a mensagem do cabeçalho com calma.
Depois de selecionar os arquivos que vão pro index, dá pra fazer um commit
direto usando [c][c]
. A tela vai mudar um pouco, mas vai abrir a tela pra
descrever as mensagens.
Pra fazer um git commit --amend
, vocês vão ter que usar :Gcommit
com
--amend
(:Gcommit --amend
).
Amend também pode ser feito dentro do :Gstatus
, usando [c][a]
ao invés
de [c][c]
, mas não tem nada que faça a assinatura ("-s") ao mesmo tempo.
Ainda, o Airline, comentado na dica de ontem, tem suporte ao fugitive.
Quando os dois tiverem instalados, se vocês quiserem que mostre o branch
atual, vocês tem que colocar um let g:airline_enable_branch=1
no vimrc.
O Fugitive não mostra, no entanto, o status atual da linha em relação ao
repositório (alterado, removido, adicionado). Para isto, é necessário outro
plugin, chamado "Git-Gutter" (Plugin 'airblade/vim-gitgutter'
).