2
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?

同一ファイルの複数の変更を部分的にステージングする

Last updated at Posted at 2024-03-01

git addコマンドは、指定したファイルに加えられた変更を全てステージングするためのコマンドです。
ファイルの変更は1つのコミットとして記録されます。

しかし、-pオプションを使いgit add -pとして実行すると、指定したファイルに加えられた複数の変更を細かい単位で選択してステージングすることができます。

このようなステージング方法をパッチモードのステージングと呼びます。

複数の変更が1つのファイルにあり、それぞれ異なるコミットとして分割したいときに有効なコマンドです。

ターミナルとの対話的な操作を通して、パッチモードのステージングをするための手順を説明していきます。

  1. 複数の変更が加えられたファイルを指定してgit add -pを実行する

    git add -p <変更のあるファイル>
    

    すると、部分的な変更の差分と共に下記のように表示されます。

    (1/4) Stage this hunk [y,n,q,a,d,e,?]?
    

    「この変更部分をステージングしますか?」という意味です。

  2. [y,n,q,a,d,e,?]の選択肢の中から行いたい操作を選んで Enter をクリックします。

    各選択肢の意味は次のとおりです。

    • y: この変更をステージングし、次の操作へ進む
    • n: この変更をステージングせずに、次の操作へ進む
    • q: この変更もこれ以降のどの変更もステージングせずに終了
    • a: このファイルの変更の内、この変更とそれ以降の変更を全てステージングして、次のファイルの操作へ進む
    • d: この変更部分もそれ以降の変更部分もステージングせずに、次のファイルの操作へ進む
    • e: エディタを開き、ステージングする部分をより細かく指定する
    • ?: ヘルプを表示する

    この操作を続ければ OK です。

    eを選択した場合のエディタの操作について詳しく説明します。
    git diffを実行した時と同じように変更の差分が表示されます。

    @@ -1,6 +1,6 @@
    function introduce(name: string, age: number): void {
    -  const sayName = "名前は" + name + "です。";
    -  const sayAge = "年齢は" + age + "歳です。";
    +  const sayName = `名前は${name}です。`;
    +  const sayAge = `年齢は${age}歳です。`;
    
      console.log(sayName + sayAge);
    }
    

    -が表示されている行は削除された変更です。この変更をステージングしたくない場合は、-をスペースに書き換えてください。

    +が表示されている行はコードの追加があった変更です。この変更をステージングしたくない場合は、この行を丸ごと削除して下さい。

    完了したら保存して終了してください。

2
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
2
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?