1. ホーム
  2. git

[解決済み] Git でファイルの一部分のみをコミットする

2022-03-15 11:10:05

質問

Git でファイルに変更を加えたとき、どうすれば一部の変更だけをコミットできますか?

例えば、あるファイルで変更された30行のうち、15行だけをコミットするにはどうしたらよいでしょうか?

どのように解決するのですか?

を使用することができます。 git add --patch <filename> (または -p と入力すると、git はファイルを適切な大きさの塊 (hunks) に分解し始めます。) そして、このような質問が表示されます。

Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?

以下は、各オプションの説明です。

  • y 次のコミットのためにこのハンクをステージングします。
  • n 次のコミットのためにこのハンクをステージングしない
  • q quit; このハンクや残りのハンクをステージングしないでください。
  • 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 ファイルを作成します。

今後の参考 Git ツール - インタラクティブなステージング