Complete Guide to Viewing Specific File Changes in Git

Nov 02, 2025 · Programming · 14 views · 7.8

Keywords: Git file differences | version control | code history tracking

Abstract: This article provides a comprehensive guide to viewing changes in specific files within the Git version control system. It begins by explaining the fundamental usage of the git diff command, covering how to examine differences between the working directory and staging area, between the staging area and the latest commit, and file changes between different commits. The article then delves into advanced applications of the git log command, including using the --follow option to track file rename history, the -p option to display detailed differences, and combining with --stat for statistical information. It also introduces the git show command for viewing file changes in specific commits and the git blame command for line-by-line code attribution. Finally, the article offers best practice recommendations for real-world development scenarios to help developers efficiently manage file change history.

Basic Usage of Git Diff Command

In the Git version control system, viewing changes to specific files is a common requirement. The git diff command is the core tool for accomplishing this task. Contrary to common misconceptions, git diff by default shows changes across the entire repository, not just the current directory.

The most basic syntax to view changes in a specific file is:

git diff file_2.rb

This command displays all differences for the file_2.rb between the working directory and the staging area. If the file has been added to the staging area but not yet committed, use the following command to view differences between the staging area and the latest commit:

git diff --staged file_2.rb

Viewing File Differences Between Commits

Beyond viewing uncommitted changes, git diff can also compare file differences between various commits. For example, to compare changes in file_2.rb between the current commit and the previous commit:

git diff HEAD~1 HEAD -- file_2.rb

To compare file differences between two specific commits:

git diff commit_hash1 commit_hash2 -- file_2.rb

Using Git Log to View File History

The git log command offers more powerful capabilities for viewing file history. The basic command to view file history is:

git log -- file_2.rb

This command lists all commit records that affected the file_2.rb file.

To view detailed change content, add the -p option:

git log -p -- file_2.rb

This command not only displays commit messages but also shows the specific changes made to file_2.rb in each commit.

Tracking File Rename History

When a file has undergone renaming, the standard git log command might not display the complete file history. In such cases, the --follow option is essential:

git log --follow -p -- file_2.rb

This command tracks the entire history of the file, including rename operations. For instance, if file_2.rb was previously named old_file.rb, using the --follow option ensures Git displays all change history before and after the rename.

Utility of Git Show Command

The git show command can display detailed information about specific commits, including file changes:

git show commit_hash -- file_2.rb

This command shows the change content of file_2.rb in the specified commit, making it particularly useful for examining detailed modifications in individual commits.

Line-by-Line Code Attribution

For scenarios requiring understanding of each line's origin, the git blame command is invaluable:

git blame file_2.rb

This command displays the last modification information for each line in the file, including commit hash, author, and modification time. On code hosting platforms like GitHub, this corresponds to the "Blame" view functionality.

Advanced Filtering and Statistical Features

Combining with other options allows further refinement of file history viewing:

git log --since="2 months ago" -- file_2.rb

This command shows only commits that affected file_2.rb within the past two months.

To view change statistics:

git log --stat -- file_2.rb

This command displays change statistics for the file in each commit, including the number of lines added and deleted.

Practical Application Scenarios

In daily development, combining these commands can solve various practical problems. For example, when needing to review the complete change history of a file:

git log --follow -p --stat -- file_2.rb

This command combination provides a comprehensive view of the file's history, including rename tracking, detailed differences, and change statistics.

For code review scenarios, generating change reports for specific time ranges:

git log --since="2024-01-01" --until="2024-12-31" -p -- file_2.rb

Best Practice Recommendations

When using these commands, it is recommended to:

By mastering these Git file viewing commands, developers can more effectively manage code changes, improve code review efficiency, and better understand project evolution history.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.