Extracting Data from the Repository

Follow Us

Our Communities

Module 6 – Extracting Data from the Repository

Git is not only a tool for tracking changes and versions—it’s also a powerful system for retrieving and analyzing historical data. Understanding how to effectively extract information from your repository can give you a valuable insight into your project’s development progression.

In this module, we’ll explore the various commands and features that Git offers for extracting data. This will enable us to look at the commit history, understand the differences between various points in our codebase, and even examine who was responsible for each change.

We will cover:

  • 6.1 Git Log
  • 6.2 Git Diff
  • 6.3 Git Blame
  • 6.4 Git Show

By the end of this module, you will have learned how to leverage these powerful commands to extract essential data from your repository. You’ll gain insights into your project history, changes made, and the contributors involved. Let’s get started with digging deep into our repository’s past!

Git Log

The git log command displays committed snapshots. It lets you list the project history, filter it, and search for specific changes.

  • Basic Log: The git log command, when used without parameters, lists the commits made in that repository in reverse chronological order.

  • Filtering the Log: The git log command supports a multitude of options to filter and format its output. For example, git log --author="John" will only show commits made by John.

  • Prettifying the Log: The git log command can also be used with the --pretty option that changes the log output to formats other than the default.

Git Diff

The git diff command displays the changes between two Git trees. It can be used to show the changes between your working directory and the index, between two commits, or between two branches.

  • Basic Diff: By default, git diff will show any uncommitted changes since the last commit.

  • Diff between Commits: The git diff [first-branch]...[second-branch] command shows the difference between the tips of the two branches.

Git Blame

The git blame command shows what revision and author last modified each line of a file. It’s a great way to identify who made what changes.

Git Show

The git show command shows various types of objects. For instance, it can be used to show the changes made by a commit, or to show the annotated tag information.

Exercises and Practice

Exercise 1: Use git log to inspect the commit history. Use different options to filter and format the log output.

Exercise 2: Make some changes in your local repository and use git diff to inspect these changes. Then, use git diff to compare different commits or branches.

Exercise 3: Use git blame on a file to see who made the changes.

Exercise 4: Use git show to inspect a commit or annotated tag.

Exercise 5: Use the --graph option with git log to visualize the commit history. Try this with a repository that has multiple branches to better understand how the branches have diverged.

Exercise 6: Use the --stat option with git log to see the stats about the file changes in each commit. Analyze how many insertions and deletions were made in each commit.

Exercise 7: Practice using git diff with the --staged option to see the changes that you’ve staged so far.

Exercise 8: Explore the use of git diff with commit hashes to see the difference between various commits. This can help you understand the progression of changes in your project.

Exercise 9: Run git blame on a file and then use the caret (^) notation to view the blame of the previous commit. This can be helpful to see how a file evolved over time.

Exercise 10: Use git show with a tag name to view information about a specific release of your project.


Each of these exercises will give you hands-on experience with Git’s powerful data extraction tools. This will not only help you better understand the history and evolution of your projects but also help you troubleshoot when issues arise.

Storing Additional Information in Your Repository


Git Hooks, Aliases, and Scripts