Git provides powerful tools to compare changes between commits, helping developers understand what has been modified, added, or deleted. The git diff command is the primary tool for viewing differences between commits, files, branches, or even the working directory and the staging area. Below, we explain how to use git diff to view differences between commits, along with examples.

1. View Differences Between Two Commits

To compare changes between two specific commits, use the git diff command followed by the commit hashes.

Example: Compare Two Commits


git diff abc123 def456

Here, abc123 and def456 are the commit hashes. The output shows the differences between the two commits.

2. View Differences Between the Working Directory and the Last Commit

To see the changes in your working directory that have not been staged for the next commit, use git diff without any arguments.

Example: Compare Working Directory with Last Commit


git diff

3. View Differences Between the Staging Area and the Last Commit

To see the changes that have been staged for the next commit but not yet committed, use git diff --cached.

Example: Compare Staging Area with Last Commit


git diff --cached

4. View Differences Between Two Branches

To compare the changes between two branches, use git diff followed by the branch names.

Example: Compare Two Branches


git diff main feature-branch

This command shows the differences between the main branch and the feature-branch.

5. View Differences for a Specific File

To compare changes for a specific file between two commits or branches, specify the file path after the commit hashes or branch names.

Example: Compare a Specific File Between Two Commits


git diff abc123 def456 path/to/file.txt

Example: Compare a Specific File Between Two Branches


git diff main feature-branch path/to/file.txt

6. View Differences in a Summary Format

To see a summary of changes (e.g., which files were modified, added, or deleted) without the detailed diff, use the --stat option.

Example: Summary of Changes Between Two Commits


git diff --stat abc123 def456

7. View Differences with Context Lines

To include a specific number of context lines around the changes, use the -U option followed by the number of lines.

Example: Show Differences with 5 Context Lines


git diff -U5 abc123 def456

8. View Differences in a Word-by-Word Format

To see differences at the word level rather than the line level, use the --word-diff option.

Example: Word-by-Word Differences


git diff --word-diff abc123 def456

9. View Differences Between the Last Commit and Its Parent

To see the changes introduced by the last commit, use git diff HEAD^ HEAD

This command compares the last commit with its parent, showing what changes were made in the most recent commit.

Conclusion

The git diff command is an essential tool for developers to understand changes in their codebase. By using various options and arguments, you can effectively compare commits, branches, and files, making it easier to track modifications and collaborate with others. Mastering git diff will enhance your ability to manage and review changes in your Git repositories.