DEV Community

Franz Wong
Franz Wong

Posted on

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.

Top comments (1)

Collapse
 
nimasarli profile image
Nima Sarli

Love this. Thanks!