add --patch | 行単位でaddする (★★★)
概要
git add
には-p (--patch)
オプションが存在する-p
を使うとファイルを行単位でadd
できる1つのファイルを複数のcommitに分けることが可能
例題 (リポジトリ: git-drill/add-patch)
:mag:
index.html
のL5,L8,L10の内容に変更を加えた :point_right:index.2.html
をindex.html
にコピー(上書き):octocat: L5,L8,L10のそれぞれを別のコミット(合計3つのコミット)にせよ
例題回答
git add -p index.html
Stage this hunk で
s
を入力しEnter以下の表示がされていることを確認して
y
を入力しEnter- <title>Add</title> + <title>Patch Add</title>
q
を入力しEntergit diff
で以下の表示を確認--- a/index.html +++ b/index.html @@ -5,9 +5,9 @@ <title>Patch Add</title> </head> <body> - <p><code>git add</code>するとファイル単位で<code>add</code>することができます。</p> + <p><code>git add --patch</code>すると行単位で<code>add</code>することができます。</p> <p>なぜそうする必要があるのでしょうか?</p> - <p>それは1つのcommitを大きな変更の塊に分けるためです。</p> + <p>それは1つのcommitを小さな変更の塊に分けるためです。</p> </body> </html>
git diff --staged
で以下の表示を確認--- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ <html lang="en"> <head> <meta charset="UTF-8"> - <title>Add</title> + <title>Patch Add</title> </head> <body> <p><code>git add</code>するとファイル単位で<code>add</code>することができます。</p>
任意のタイトルでgit commitする 例:
git commit -m "タイトルにサイト名を追加"
上記1~7をあと1回繰り返す (L8の差分のみをgit commitする)
通常のgit commitでL10の差分をgit commitする
git log --oneline
で新しい3つのcommitができていることを確認git show HEAD
からgit show HEAD~2
で1行差分のコミットとなっていることを確認
演習
TODO
Previousdetached HEAD | ブランチから外れる (★★)Nextrebase --interactive (squash/re-order) | 複数のcommitを1つにまとめる/順序を入れ替える (★★★)
Last updated