Git でファイルに変更を加えた場合、変更の一部だけをコミットするにはどうすればよいですか?
たとえば、ファイル内で変更された 30 行のうち 15 行だけをコミットするにはどうすればよいでしょうか?
ベストアンサー1
以下を使用できます:
git add --patch <filename>
または略して:
git add -p <filename>
Git はファイルを、意味のある「ハンク」(ファイルの部分) に分割します。次に、次の質問が表示されます。
Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?
各オプションの説明は次のとおりです。
- y次のコミットのためにこのハンクをステージングする
- n次のコミットのためにこのハンクをステージングしない
- q終了。このハンクまたは残りのハンクをステージングしない
- aこのハンクとファイル内のそれ以降のすべてのハンクをステージングする
- dこのハンクまたはファイル内のそれ以降のハンクをステージングしない
- g移動するハンクを選択する
- /指定された正規表現に一致するハンクを検索する
- jこのハンクを未決定のままにして、次の未決定ハンクを参照する
- Jこのハンクは未決定のままにして、次のハンクを見る
- kこのハンクを未決定のままにして、前の未決定ハンクを参照する
- Kこのハンクを未決定のままにして、前のハンクを参照する
- s現在のハンクを小さなハンクに分割する
- e現在のハンクを手動で編集する
- その後、
+
/-
を#
(ベクセン)
- その後、
- ?印刷ハンクヘルプ
ファイルがまだリポジトリにない場合は、まず を実行できますgit add -N <filename>
。その後、 に進むことができますgit add -p <filename>
。
その後は以下を使用できます:
git diff --staged
正しい変更が行われたか確認するgit reset -p
誤って追加されたハンクをステージ解除するgit commit -v
コミットメッセージを編集しながらコミットを表示します。
git format-patch
これは、コミット データをファイルに解析することを目的とするコマンドとは大きく異なることに注意してください.patch
。