Git Fugitive視覚的に選択されたコードのチャンクをgit追加する方法


13

ビジュアルモードでコードを選択できるかどうかを知りたいgit addですか?

fugitive.vimで確認しましたが、方法が見つかりませんでした。

出来ますか ?またはそれを行う他のプラグインはありますか?

回答:


12

他の方法もあるかもしれませんが、このアプローチでは、チャンクを追加するだけではありません。そのため、私はそれを頻繁に使用する傾向があります。

  1. :Gdiffコマンドを実行します。元のウィンドウの左/上に現在インデックスにある現在のファイルのバージョンで分割を開きます。

  2. 元のウィンドウ(右または下のウィンドウ)で、必要な変更を視覚的に選択しgit addます。

  3. :diffput範囲を操作できるコマンドを実行します。(dpキーはビジュアルモードでは機能しません。)

  4. インデックスのファイルを更新するための変更を保存する2番目のウィンドウを閉じます。ここで、保存する前に好きなように編集できます。ファイルの元のバージョンまたは新しいバージョンと完全に一致する必要はありません。

:diffput変更の構造によっては、期待する結果が常に得られるとは限らないことに注意してください(特に、変更の連続したブロックの一部のみをコミットする場合)。コミットを検証することを忘れないでください。ただし、ほとんどの実際的な状況では問題なく動作します。


7

Vimcastsには、Fugitive.vimに関する素晴らしいシリーズがあります。エピソードFugitive.vim-gitインデックスでの作業が質問に最も役立ちます。

を使用:Gdiffして、ファイルの一部のみをステージングできます。実行:Gdiffすると、現在のファイルとステージ/インデックスが「差分」で表示されます。あなたは、単に(Vimの差分コマンドを使用することができdpdo:diffput、および:diffget、ステージ/インデックスに塊を移動します)。次に、他のバッファー:w/ と同じようにステージ/インデックスファイルを書き込みます:x


:Gstatus+ Dを使用して、fugitiveでも同じことを行います。このようにして、変更したファイルのリストから操作中のファイルを選択することもできます。
Luc Hermitte 2017年

6

他のプラグインを使用するソリューションについて具体的に質問したように、変更の表示、ステージング、およびコミットを中心とするGitプラグイン(他のエディターの人気のあるMagitプラグインに基づく)であるvimagitを使用してビジュアルセレクションをステージングすることもできます。

Vimagitを使用してビジュアルセレクションをステージングするには:

  1. :Magitコマンドを実行して、リポジトリ内の変更されたすべてのハンクを表示する新しいバッファを開きます(1つのファイルだけではありません)。

  2. ステージングしたいラインを見つけてvisual選択を行い、

  3. 「ステージ」マッピングを押しますS


6

完全なハンクまたは部分的なハンクのステージ vim-gitgutter

  1. ステージコンプリートハンク

    • <Leader>hs または
    • :GitGutterStageHunk
  2. 追加のみのハンクのステージ部分(2019年8月以降)

    • ビジュアルモード

      • {Visual}<Leader>hs
      • :'<,'>GitGutterStageHunk
        '<,'>いつものように挿入されます)
    • 範囲

      • :42,45GitGutterStageHunk
  3. プレビューウィンドウを介して任意のハンクのステージパーツ(2019年8月以降)

    • ハンクをプレビューします。 <Leader>hp
    • プレビューウィンドウに移動します。 :wincmd P
    • ステージングしたくない行を削除します
    • 残りのラインをステージングします。例:<Leader>hsまたは:GitGutterStageHunk

更新日:17.8.2019最近のコミットbc1d28dおよびb036fcfによる

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.