Git Fugitive como o git adiciona um pedaço de código visualmente selecionado

14

Gostaria de saber se eu poderia selecionar algum código no modo visual e git addele?

Eu verifiquei com fugitive.vim, mas não encontrei como fazê-lo.

É possível ? Ou existe algum outro plugin para fazer isso?

albttx
fonte

Respostas:

14

Pode haver outras maneiras, mas essa abordagem permite que você faça mais do que adicionar um pedaço, e é por isso que costumo usá-lo bastante.

  1. Executar :Gdiffcomando. Ele abrirá uma divisão com a versão do arquivo atual que está atualmente no índice à esquerda / parte superior da janela original.

  2. Enquanto estiver na janela original (direita ou inferior), faça a seleção visual das alterações que deseja git add.

  3. Executar :diffputcomando, que pode operar em um intervalo. (a dpchave não funciona no modo Visual.)

  4. Feche a segunda janela, salvando as alterações para atualizar o arquivo no índice. Aqui você pode editá-lo da maneira que desejar antes de salvar, pois não precisa corresponder exatamente à versão original ou nova do arquivo.

Lembre-se de que :diffputnem sempre você pode dar o que você esperaria, dependendo da estrutura das mudanças (especialmente se você está cometendo apenas parte do bloco contíguo de mudanças). Portanto, não esqueça de validar o commit. Na maioria das situações práticas, funciona bem.

xaizek
fonte
7

O Vimcasts tem uma ótima série no Fugitive.vim . O episódio Fugitive.vim - trabalhar com o índice git seria o mais útil para sua pergunta.

Você pode usar :Gdiffpara preparar apenas partes de um arquivo. A execução :Gdiffmostrará o arquivo atual "diff-ed" com o estágio / índice. Você pode simplesmente usar comandos diff do Vim ( dp, do, :diffpute :diffget) para mover o galã ao palco / index. Então você escreve o arquivo de estágio / índice como faria com qualquer outro buffer, :w/ :x.

Peter Rincker
fonte
Estou usando o :Gstatus+ Dpara fazer o mesmo com o fugitivo. Dessa forma, também posso escolher o arquivo em que estou operando na lista de arquivos que foram modificados.
precisa saber é o seguinte
6

Como você perguntou especificamente sobre soluções que usam outros plug-ins, observarei que você também pode organizar seleções visuais usando o vimagit , que é um plug-in Git (baseado no popular plugin Magit do outro editor ), centrado em visualizar, preparar e confirmar alterações.

Para preparar uma seleção visual usando o Vimagit:

  1. Execute o :Magitcomando para abrir um novo buffer que exibe todos os blocos alterados no seu repositório (não apenas em um arquivo),

  2. Localize as linhas que você deseja preparar e faça sua visualseleção,

  3. Pressione o mapeamento "palco": S.

Rico
fonte
6

Estágio Hunks completos ou parciais com vim-gitgutter

  1. Estágio Completo

    • <Leader>hs ou
    • :GitGutterStageHunk
  2. Encenar parte de um pedaço só de adições (desde 8/2019)

    • Modo visual

      • {Visual}<Leader>hs
      • :'<,'>GitGutterStageHunk
        ( '<,'>estão sempre inseridos para você)
    • Alcance

      • :42,45GitGutterStageHunk
  3. Encenar parte de qualquer pedaço através da janela de visualização (desde 8/2019)

    • Visualize o pedaço, por exemplo <Leader>hp
    • Vá para a janela de visualização, por exemplo :wincmd P
    • Exclua as linhas que você não deseja exibir
    • Prepare as linhas restantes, por exemplo, <Leader>hsou:GitGutterStageHunk

Atualizado: 17.8.2019 devido a recentes confirmações bc1d28d e b036fcf

Hotschke
fonte
Ele pediu vim-fugitivo, não vim-gitgutter
giggi__