Git Fugitive comment git ajouter un morceau de code sélectionné visuellement

14

Je voudrais savoir si je pouvais sélectionner du code en mode visuel et git addcela?

J'ai vérifié avec fugitive.vim mais je n'ai pas trouvé comment le faire.

C'est possible ? Ou existe-t-il un autre plugin pour le faire?

albttx
la source

Réponses:

14

Il peut y avoir d'autres façons, mais cette approche vous permet de faire plus que d'ajouter un morceau, c'est pourquoi j'ai tendance à l'utiliser beaucoup.

  1. Exécuter la :Gdiffcommande. Il ouvrira une scission avec la version du fichier actuel qui est actuellement dans l'index à gauche / en haut de la fenêtre d'origine.

  2. Dans la fenêtre d'origine (à droite ou en bas), effectuez une sélection visuelle des modifications que vous souhaitez git add.

  3. Exécuter la :diffputcommande, qui peut fonctionner sur une plage. (la dpclé ne fonctionne pas en mode visuel.)

  4. Fermez cette deuxième fenêtre en enregistrant les modifications pour mettre à jour le fichier dans l'index. Ici, vous pouvez le modifier comme vous le souhaitez avant de l'enregistrer, il ne doit pas nécessairement correspondre exactement à la version originale ou nouvelle du fichier.

N'oubliez pas que :diffputcela ne vous donnera pas toujours ce à quoi vous vous attendez en fonction de la structure des changements (surtout si vous n'engagez qu'une partie d'un bloc contigu de changements). N'oubliez donc pas de valider le commit. Dans la plupart des situations pratiques, cela fonctionne bien.

xaizek
la source
7

Vimcasts a une grande série sur Fugitive.vim . L'épisode Fugitive.vim - travailler avec l'index git serait le plus utile pour votre question.

Vous pouvez utiliser :Gdiffpour mettre en scène uniquement des parties d'un fichier. Running :Gdiffvous montrera le fichier actuel "diff-ed" avec la scène / index. Vous pouvez simplement utiliser Vim les commandes diff ( dp, do, :diffputet :diffget) pour déplacer le gros morceau à l'étape / index. Ensuite, vous écrivez le fichier stage / index comme vous le feriez pour tout autre tampon, :w/ :x.

Peter Rincker
la source
J'utilise :Gstatus+ Dpour faire de même avec les fugitifs. De cette façon, je peux également choisir le fichier sur lequel j'opère parmi la liste des fichiers qui ont été modifiés.
Luc Hermitte
6

Comme vous l'avez spécifiquement demandé sur les solutions qui utilisent d'autres plugins, je noterai que vous pouvez également organiser des sélections visuelles en utilisant vimagit , qui est un plugin Git (basé sur le plugin Magit populaire de l'autre éditeur ) centré sur l'affichage, la mise en scène et la validation des modifications.

Pour organiser une sélection visuelle à l'aide de Vimagit:

  1. Exécutez la :Magitcommande pour ouvrir un nouveau tampon qui affiche tous les morceaux modifiés dans votre référentiel (pas seulement dans un fichier),

  2. Localisez les lignes que vous souhaitez mettre en scène et effectuez votre visualsélection,

  3. Appuyez sur la cartographie « de scène »: S.

Riches
la source
6

Stage Mecs complets ou partiels avec vim-gitgutter

  1. Stage Complete Hunk

    • <Leader>hs ou
    • :GitGutterStageHunk
  2. Stage Stage of a Additions-only Hunk (depuis le 8/2019)

    • Mode visuel

      • {Visual}<Leader>hs
      • :'<,'>GitGutterStageHunk
        ( '<,'>sont comme toujours insérés pour vous)
    • Intervalle

      • :42,45GitGutterStageHunk
  3. Mettre en scène une partie de n'importe quel morceau via la fenêtre d'aperçu (depuis le 8/2019)

    • Prévisualisez le morceau, par exemple <Leader>hp
    • Passer à la fenêtre d'aperçu, par exemple :wincmd P
    • Supprimez les lignes que vous ne souhaitez pas mettre en scène
    • Mettez en scène les lignes restantes, par exemple <Leader>hsou:GitGutterStageHunk

Mise à jour: 17.8.2019 en raison de validations récentes bc1d28d et b036fcf

Hotschke
la source
Il a demandé vim-fugitive, pas vim-gitgutter
giggi__