It is of course also important that the commit solves the problem that it claims to solve, so doing an extra code check before you commit is a good idea. This is much easier to achieve if you start out by committing changes early on in the project. If you discover a new problem, you should do a separate commit. The reason for this is at a commit should only contain changes related to a single problem. One of the most important habits when working with projects in Git is to commit often and early. People is able to know how files have changes individually, but they don’t know how those files change with respect to the changes applied to other files of the same project. Other systems, like Microsoft Word or any other MS software, changes are tracked at the file level rather than at the project level. This ability of taking snapshots of the projects is what makes Git to any other version control system. Git thinks about its data more like a stream of snapshots of the whole project. To be efficient, if files have not changed, Git doesnât store the file again, just a link to the previous identical file it has already stored. Every time you save the state of your project (i.e., commit), Git basically takes a picture of what all your files look like at that moment and stores a reference to that snapshot. This means that Git is a system to fully clones the project and in its history into any client’s repository or local computer. Git is a Distributed Version Control System.