【Git】git add -pで特定部分だけステージングエリアに登録する

下記のようにApp.configとForm1.vbの2ファイルが更新されており

App.configとForm1.vbそれぞれのの更新内容が下記のようになっているとする。

上記のような状態で、Form1.vbの「+ Dim b As Integer」の行の変更だけをステージングエリアに登録しコミットしてみるサンプル/メモとなります。

手順

「git add -p Form1.vb」コマンドを実行する。すると下記のような画面になった。下記の場合はForm1.vbの

+    Dim b As Integer
+    Dim c As Integer
の変更内容を一括でどうしたいか?と聞かれているようで、今回は「+ Dim b As Integer」の行だけをステージングエリアに登録したいので、ステージングエリアに登録するか否かの問答の範囲をさらに分割する必要がある。

なのでまずは「s」を押してステージングエリアに登録するか否かの範囲を単位を分割してみようとしたが、下記のように既に十分細かく分けられており、sコマンドではこれ以上分割できない旨のメッセージが表示されてしまった。

そのため次に「e」コマンド(エディタを起動して変更の登録箇所を細かく手動で編集)を押すと下記のような画面になる。

上記のキャプチャの水色の英語にも書かれているのですが、

  • 先頭に「+」がついている行をステージングエリアの登録から除外する場合はエディタで行ごと削除する
  • 先頭に「-」がついている行をステージングエリアの登録から除外する場合はエディタで先頭の「-」を「 」(半角スペース)に置き換える

とすれば良いとのことなので「-」を「 」(半角スペース)へ、「+ Dim c As Integer」を消去し、Escで挿入モードを解除し「:wq」コマンドを押してvimを終了させる

(補足)
編集内容がおかしい状態でvimを終了すると下記のようなキャプチャにりますが、yを押せばリトライできます

問題なければ上記補足のようなメッセージは表示されずインデックスに登録される
「git status」、「git diff –cached」で状態を確認してみると今回目標としているForm1.vbの「+ Dim b As Integer」の行のみステージングエリアに登録できていることが分かる。


上記の状態でコミットを行い、git log -p でコミット内容を確認してみると、確かに「+ Dim b As Integer」だけをコミットできていることが分かる。

タイトルとURLをコピーしました