What Are Characteristics of Git?
A. Strong support for non-linear development
- Git supports rapid branching and merging and includes specific tools for visualizing and navigating a non-linear development history.
- A major assumption in Git is that a change will be merged more often than it is written.
- Branches in Git are very lightweight.
B. Distributed development
- Git provides each developer a local copy of the entire development history, and changes are copied from one such repository to another.
- The changes can be merged in the same way as a locally developed branch very efficiently and effectively.
C. Compatibility with existing systems/protocol
- Git has a CVS server emulation, which enables the use of existing CVS clients and IDE plugins to access Git repositories.
D. Efficient handling of large projects
- Git is very fast and scalable compared to other version control systems.
- The fetching power from a local repository is much faster than is possible with a remote server.
E. Data Assurance
- The Git history is stored in such a way that the ID of a particular version depends upon the complete development history leading up to that commit.
- Once published, it is not possible to change the old versions without them being noticed.
F. Automatic Garbage Collection
- Git automatically performs garbage collection when enough loose objects have been created in the repository.
- Garbage collection can be called explicitly using git gc –prune.
G. Periodic explicit object packing
- Git stores each newly created object as a separate file. It uses packs that store a large number of objects in a single file (or network byte stream) called packfile, delta-compressed among themselves.
- A corresponding index file is created for each pack file, specifying the offset of each object in the packfile.
- The process of packing can be very expensive computationally.
- Git allows the expensive pack operation to be deferred until later when time does not matter.
- Git does periodic repacking automatically but manual repacking can be done with the git gc command.
Introduction to Github
Nowadays software development takes place in a distributive way. This article focuses on one such technology that supports distributed software development i.e., GIT and it’s application via GitHub.