BLOGTIMES
2019/10/28

git で変更を半分だけコミットする

  git 
このエントリーをはてなブックマークに追加

git を使ってソースコードを管理していると、1 コミットで 1 Issue になるように履歴もきれいに保ちたいということがあります。

始める前はそうは思っていても、作業中に別のことが気になって、そちらもついでに直してしまったような場合(例えばバグ修正中に typo を見つけたような場合)、コミットする段階になってから困ることがあります。そのような場合には add や commit 時に -p をつけてやれば、hunk ごとに(場合によっては hunk の中をさらに分割して)ステージすることができます

Git - git-commit Documentation

-p
--patch
Use the interactive patch selection interface to chose which changes to commit. See git-add[1] for details.

実際に add/commit しようとすると、プロンプトがこんな感じになるので種類が多くて驚くかもしれません。

Stage this hunk [y,n,q,a,d,/,e,?]

基本的には y/n で答えればよく、さらに分割する必要があるときは e を選ぶという感じでしょうか。
e を選んだときにはエディタが立ち上がるので、そこで add/commit に含めたい変更(先頭が +/- で始まっている行)だけを残すようにすればよいだけです。

これについての詳細な説明は Git - git-add Documentation にあります。

y - stage this hunk n - do not stage this hunk q - quit; do not stage this hunk or any of the remaining ones a - stage this hunk and all later hunks in the file d - do not stage this hunk or any of the later hunks in the file g - select a hunk to go to / - search for a hunk matching the given regex j - leave this hunk undecided, see next undecided hunk J - leave this hunk undecided, see next hunk k - leave this hunk undecided, see previous undecided hunk K - leave this hunk undecided, see previous hunk s - split the current hunk into smaller hunks e - manually edit the current hunk ? - print help

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/11311
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン