DEV Community

Franz Wong
Franz Wong

Posted on

5 1

View last change of a file in git without knowing the hash

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.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (1)

Collapse
 
nimasarli profile image
Nima Sarli

Love this. Thanks!

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay