Gitの小ネタおれおれAdvent Calendar 2022 – 23 日目
VS Code といったリッチなエディターや IDE でも良いんですが、量が多くないときはコマンドラインから差分を確認したりしてます。
エイリアスはこんな感じで登録。
[alias]
d = diff --color-words=\"\\\\w+\"
diffc = diff --cached
dc = diff --cached --color-words=\"\\\\w+\"
diffl = log -1 -p
git diff
で普通の diff
今作業中の変更を表示します。もし既に git add
されている、staged 状態のものがあれば、その後からの変更になります。
まあご存じですよね。
$ git diff
diff --git a/README.md b/README.md
index 77ecebf..0ffc258 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,3 @@
-# Hello Word!
+# Hello World!
git diff --color-words
で単語単位の diff
普通の diff は行単位で変更を表示しますが、--color-words
オプションで単語単位になります。
$ git diff --color-words="\w+"
diff --git a/README.md b/README.md
index 26f0260..cc0be1e 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
# Hello WordWorld!
白黒だとわけわかんないね。スクショをご覧ください。
値 "\w+"
の部分は「単語」を定義する正規表現です。省略できるけど初期値だと記号とかもくっ付いて着色されてしまい不便。
エスケープがだるい
ちなみに .gitconfig
に書き出すときはエスケープが面倒なことに。
[alias]
d = diff --color-words=\"\\\\w+\"
git diff --cached
で stage 上の変更を表示
普通の git diff
は作業中の変更と staged なものとの差分を表示しますが、--cached
を付けると既に git add
した変更を表示してくれます。
見た目は普通の git diff
と同じなので例は省略。
--cached
と --color-words
の両方で stage 上の変更を単語単位で表示
合わせ技です。便利。
git log --patch
でコミットの変更を表示
git diff
じゃなくて git log
です。-p
、--patch
を付けるとそのコミットで行われた変更を表示してくれます。
あと --max-count=1
あるいは -1
を付けると 1 件だけ表示して終わってくれます。差分を見たいなっていう気分のときはそっちの方が便利。
$ git log -1 -p
commit d37b0a164fa82aa860dd67e675b2ec0a7fb6a44c (HEAD -> master)
Author: Ginpei <[email protected]>
Date: Thu Dec 22 16:50:04 2022 +0900
typo
diff --git a/README.md b/README.md
index 26f0260..cc0be1e 100644
--- a/README.md
+++ b/README.md
@@ -1 +1 @@
-# Hello Word!
+# Hello World!
おしまい
あと git add --patch
もよく使ってます。コミット前のレビューがてら。