Introduction

As you may be aware, Git is a version control software application created by Linus Torvalds (the creator of Linux) with the collaboration of many other developers.
A version control application keeps track of all the changes that you do in the files of your project. Every time you make changes to files of a project, you can push those changes to a repository. Other developers can pull your changes from the repository and continue to work with the improvements that you added to the project files.
There are many version control applications. This article focus on the benefits of using Git.

The Benefits of Working with Git

Working offline

Some version control applications popular in the past like CVS and SubVersion used the concept of central repository accessible somewhere in the network where all the changes needed to be commited.
Git uses the concept of local repository where you have a copy of the “complete repository” of your project. You can commit the changes you make to the files of your project to the local repository. So Git allows you to work completely offline, i.e. even when you do not have access to a remote repository.
Later you can synchronize or sharing the changes you made when you have online access to the remote repository.

Fast to Work With

Most of the Git operations are fast, mainly because they are performed on your local repository copy.

Repositories Are Smaller

A typical Git repository is smaller than for instance one using SubVersion. If you want to compare, you can try this test page. You can read more about this learning how Git packs information.

Moving or Adding files

If you want to move a file inside your repository Git automatically track the moves. This was not possible in old version control applications like CVS. Moving a file would typically require to create a new file and remove the old one, thus losing the changes history.
Also if you want to add only certain files with some extension with Git you can use wildcards. For example to add only .php files you can run:
git add '*.php'

Ignore Certain Files

Sometimes you have files being generated by your project, like for instance log files or files generated by your IDE, that you do not want to store in project repository because they are not really part of your source code.
You can tell Git to ignore certain files in the local repository directories using a file named .gitignore. The files listed in .gitignore are excluded from the version control process as if they are not there. You can share those rules committing the file or just keep it locally.

Branches

Sometimes you need to work on new experimental features without interfering with the main code of your project.
You can achieve this by creating new branches to try the code of those experimental features.
Branches also allow different developers to work on different features without interfering with each other work. Then when the features are ready, they can commit the branch changes in the main branches.

Check the Status of Your Changes

Check the status of the changes you made to your repository is pretty straightforward. The git status command lets you see what would happen if you committed your changes at a given moment. It can help to avoid the mistakes of using different externals branches of your project.

Stash Branches

If you are working on a branch of your project but you do not want to commit the changes, you can save the current status of that branch to return to it in the future. You can switch your work to another branch and insert the stashed modification in it. 
With git stash command, you can save the current status. With git stash pop command you will apply the stashed modifications.

Cherry Pick Changes from Branches

Git allows to pick one commit from some branch and apply it into the current branch. This operation is helpful for testing purposes. Imagine you want to test some temporary modification or pick some files updated in other branches.

Find version that Introduced a bug using Binary Search

If you have an issue in your code and you want to know when it was introduced and what it is, with the git bisect command you could go back to every commit till you will find the bad one one which the issue was introduced. You can learn more about this on the documentation about Git tools for debugging.

Conclusion

In this part of the article we learned about some important features of Git that benefit your project development process and often are advantages when comparing to other version control applications.
In the next part we will cover more advance features that Git provides like collaboration between developers, using existing Web platforms that support Git and migrating repositories from other version control systems.

These are notes I made after reading this book. See more book notes

Just to let you know, this page was last updated Thursday, Nov 21 24