git diff
can show you the differences between 2 commits. You can use git diff HEAD~1 HEAD -- <filename>
if the previous change is in the last commit.
But most of the time, the last change is not made in the last commit. It was made in n-th commits before. You can use git log -- <filename>
to find out the commit of the last change. This introduces an extra step. 😅
Actually, you can use git log -p
instead. Suppose we have a setup like below. We want to check the changes of b
.
git init
echo "a1" > a
echo "b1" > b
git add .
git commit -m "1st commit"
echo "b2" > b
git add b
git commit -m "2nd commit"
echo "a3" > a
git add a
git commit -m "3rd commit"
It doesn't show anything if we use git diff HEAD~1 HEAD -- b
, because it is comparing the 2nd and 3rd commit, there is no change in b
.
If we use git log -p -- b
, we can see all the changes on b
without knowing the commit hash.
commit 5bb2c7acf3ba237f7c3f2b367996e92dd10b271f
Author: Franz <xxx>
Date: Sat Sep 19 12:08:34 2020 +0800
2nd commit
diff --git a/b b/b
index c9c6af7..e6bfff5 100644
--- a/b
+++ b/b
@@ -1 +1 @@
-b1
+b2
commit bd6508390bcb0f305a9e3e1f9a393d874df419c9
Author: Franz <xxx>
Date: Sat Sep 19 12:07:54 2020 +0800
1st commit
diff --git a/b b/b
new file mode 100644
index 0000000..c9c6af7
--- /dev/null
+++ b/b
@@ -0,0 +1 @@
+b1
If you want to see only the last change, you can use git log -p -1 -- b
.
One more thing, you can use --no-pager
if you don't like to switch to interactive mode when checking the diff. Just do git --no-pager log -p -- b
.
Top comments (1)
Love this. Thanks!