In this post I am directly going to hit command line to demonstrate how $ git diff works.
Use Case 1
I changed a tracked file. Now want to see difference between working directory & repo version.
Solution
$ git diff HEAD index.html
diff --git a/index.html b/index.html
index 2a6a819..02b838e 100644
--- a/index.html
+++ b/index.html
@@ -3,6 +3,6 @@
</head>
<body>
- This is index.html page. Adding some more content.
+ Incredible India
</body>
</html>
diff --git a/index.html b/index.html
index 2a6a819..02b838e 100644
--- a/index.html
+++ b/index.html
@@ -3,6 +3,6 @@
</head>
<body>
- This is index.html page. Adding some more content.
+ Incredible India
</body>
</html>
Use Case 2
I staged my changes. Now want to see difference between staged and repo versions of a file.
Solution
In this case if you execute $ git diff there will be no results. Use --cached flag to compare staged and commit versions.
$ git diff --cached index.html
Use Case 3
I edited a staged file & now want to see difference between staged and working copy of the file.
Solution
$ git diff index.html
diff --git a/index.html b/index.html
index 02b838e..6b97ecf 100644
--- a/index.html
+++ b/index.html
@@ -4,5 +4,6 @@
</head>
<body>
Incredible India
+ New Ambassadors - Big B & PC
</body>
</html>
diff --git a/index.html b/index.html
index 02b838e..6b97ecf 100644
--- a/index.html
+++ b/index.html
@@ -4,5 +4,6 @@
</head>
<body>
Incredible India
+ New Ambassadors - Big B & PC
</body>
</html>
Use Case 4
Find difference made to a file between two commits.
Solution
I am having index.html file in my repo. I am having two commits.
$ git log --oneline
02de0b7 Update index file
00ab6f6 Add index.html of project
02de0b7 Update index file
00ab6f6 Add index.html of project
I want to find what is changed in index.html between old and current commit (HEAD).
$ git diff 00ab6f6..HEAD index.html
diff --git a/index.html b/index.html
index 0ce595f..2a6a819 100644
--- a/index.html
+++ b/index.html
@@ -3,6 +3,6 @@
</head>
<body>
- This is index.html page.
+ This is index.html page. Adding some more content.
</body>
</html>
diff --git a/index.html b/index.html
index 0ce595f..2a6a819 100644
--- a/index.html
+++ b/index.html
@@ -3,6 +3,6 @@
</head>
<body>
- This is index.html page.
+ This is index.html page. Adding some more content.
</body>
</html>
It shows a line removed (red) and a new line added (green) replacing old line.
Note: The order of commits in command is important. First old commit then latest commit.
I want to see the words changed.
$ git diff --color-words 00ab6f6..HEAD index.html
diff --git a/index.html b/index.html
index 0ce595f..2a6a819 100644
--- a/index.html
+++ b/index.html
@@ -3,6 +3,6 @@
</head>
<body>
This is index.html page. Adding some more content.
</body>
</html>
diff --git a/index.html b/index.html
index 0ce595f..2a6a819 100644
--- a/index.html
+++ b/index.html
@@ -3,6 +3,6 @@
</head>
<body>
This is index.html page. Adding some more content.
</body>
</html>
It just shows me words added in green. If any content is removed from file then it will be shown in red.
You can use $ git diff with tree-ish i.e. SHA-1 values or branch names.
E.g.
1. To get difference between two branches -
$ git diff master..feature-home
2. To get differences between two commits with summary and stat-
$ git diff --summary --stat 02de0b7..18ddc0d
home.html | 1 +
index.html | 4 +++-
2 files changed, 4 insertions(+), 1 deletion(-)
create mode 100644 home.html
You can use file name(s) in all the above commands to get difference made (if any) in a particular file or set of files.
Setup p4Merge as diff and merge tool
I found it difficult to understand the difference between versions of a file when using a simple console. A better approach is to use P4Merge Tool.
Click here to access the blog post I referred for configuring P4Merge as merge tool in git on Windows.
After download and install, I executed following commands in my git repo.
And then to launch P4Merge tool
$ git difftool
You can use $ git diff with tree-ish i.e. SHA-1 values or branch names.
E.g.
1. To get difference between two branches -
$ git diff master..feature-home
2. To get differences between two commits with summary and stat-
$ git diff --summary --stat 02de0b7..18ddc0d
home.html | 1 +
index.html | 4 +++-
2 files changed, 4 insertions(+), 1 deletion(-)
create mode 100644 home.html
You can use file name(s) in all the above commands to get difference made (if any) in a particular file or set of files.
Setup p4Merge as diff and merge tool
I found it difficult to understand the difference between versions of a file when using a simple console. A better approach is to use P4Merge Tool.
Click here to access the blog post I referred for configuring P4Merge as merge tool in git on Windows.
After download and install, I executed following commands in my git repo.
$ git config --global merge.tool p4merge
$ git config --global mergetool.p4merge.path "C:/Program Files/Perforce/p4merge.exe"
$ git difftool
No comments:
Post a Comment
Your comments are very much valuable for us. Thanks for giving your precious time.