0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Git】ファイルの変更の一部をcommitしたい場合

Last updated at Posted at 2019-10-27

git add -p で変更の一部をステージにあげる

変更した1ファイルの中の一部分のみを commit したい場合、git add に p オプションをつけることで、hunk (変更した範囲) ごとにステージにあげるかどうかを聞いてくれる。

git add -p <file_path>

一気にファイル変更しちゃったけどコミットは分けておきたい、なんて時に便利。ファイルパスを指定しない場合、変更したファイルすべてについて聞いてくれる。

実行すると以下のような画面になる。

@@ -9,7 +9,7 @@ class Sample
   def bb
   end


-  def method1
+  def method2
   end
 
   def xx
Stage this hunk [y,n,q,a,d,K,j,J,g,/,e,?]?

この hunk どうする?って聞いてくるので、y でステージにあげる、n であげないようにする。コマンドを入れると次の hunk に進む。q を押すか最後まで行くと、指定された hunk がステージに上がって終了。
基本的にy, n, q (終了), e (手動で指定)ができれば十分。よくわからん場合は何も入れずにenter押すとコマンドの説明が見られる。

e (手動で指定) を選んだ場合

vimが立ち上がり、hunk の編集モードに入る。


# Manual hunk edit mode -- see bottom for a quick guide.
@@ -9,7 +9,7 @@ class Sample
   def bb
   end


-  def method1
+  def method2
   end

   def xx
# ---
# To remove '-' lines, make them ' ' lines (context).
# To remove '+' lines, delete them.
# Lines starting with # will be removed.

反映させたくない部分を消し、それ以外はそのままにする。
"-" 行を反映させたくない場合は、行頭の"-"を消す。
"+" 行の場合は、該当する行を消す。

終わったら:wqで終了。

コマンドリスト

コマンド 内容
y 反映して次へ進む
n 反映させずに次へ進む
q 終了
a 今のファイルの hunk を全て反映
d 今のファイルの hunk を全て未反映
j 何もせず次へ進む
J 何もせず次の未指定 hunk へ進む
k 何もせず前に戻る
K 何もせず前の未指定 hunk に戻る
g 飛びたい hunk を選択
/ 正規表現で hunk を検索
e 手動で指定
? 各種コマンドの説明
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?