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.htmlStage 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