{"id":28,"date":"2017-09-24T03:54:53","date_gmt":"2017-09-24T03:54:53","guid":{"rendered":"http:\/\/www.sureshselvam.com\/?p=28"},"modified":"2021-04-27T12:40:18","modified_gmt":"2021-04-27T12:40:18","slug":"git-version-control-system","status":"publish","type":"post","link":"https:\/\/www.sureshselvam.com\/index.php\/2017\/09\/24\/git-version-control-system\/","title":{"rendered":"GIT (Version Control System)"},"content":{"rendered":"<p><strong>What is Version Control?<\/strong><\/p>\n<p><a href=\"https:\/\/www.sureshselvam.com\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.sureshselvam.com\/wp-content\/uploads\/2017\/09\/ITH_Managing-Code-in-GIT-1024x482.jpg\" alt=\"git\" width=\"665\" height=\"313\" class=\"aligncenter size-large wp-image-34\" srcset=\"https:\/\/www.sureshselvam.com\/wp-content\/uploads\/2017\/09\/ITH_Managing-Code-in-GIT-1024x482.jpg 1024w, https:\/\/www.sureshselvam.com\/wp-content\/uploads\/2017\/09\/ITH_Managing-Code-in-GIT-300x141.jpg 300w, https:\/\/www.sureshselvam.com\/wp-content\/uploads\/2017\/09\/ITH_Managing-Code-in-GIT-768x361.jpg 768w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><\/a><\/p>\n<p>Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.<br \/>\nIt allows you to revert files back to a previous state, revert the entire project back to a previous state, compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when, and more.<\/p>\n<p><strong>Local Version Control Systems<\/strong><br \/>\nMany people\u2019s version-control method of choice is to copy files into another directory<br \/>\nIt is easy to forget which directory you\u2019re in and accidentally write to the wrong file or copy over files you don\u2019t mean to.<br \/>\nTo deal with this issue, programmers long ago developed local VCSs that had a simple database that kept all the changes to files under revision control.<br \/>\nOne of the more popular VCS tools was a system called RCS<br \/>\nRCS works by keeping patch sets (that is, the differences between files) in a special format on disk; it can then re-create what any file looked like at any point in time by adding up all the patches.<\/p>\n<p><strong>Centralized Version Control Systems<\/strong><\/p>\n<p>Need to collaborate with developers on other systems.<br \/>\nCentralized Version Control Systems (CVCSs) were developed. These systems, such as CVS, Subversion.<br \/>\nFor many years, this has been the standard for version control.<br \/>\n\u00a0Administrators have fine-grained control over who can do what; and it\u2019s far easier to administer a CVCS than it is to deal with local databases on every client.<br \/>\nThis setup also has some serious downsides. The most obvious is the single point of failure that the centralized server represents.<br \/>\nServer goes down for an hour<br \/>\n\u00a0If the hard disk the central database is on becomes corrupted, and proper backups haven\u2019t been kept<\/p>\n<p><strong>Distributed Version Control Systems<\/strong><\/p>\n<p>In a DVCS (such as Git), clients don\u2019t just check out the latest snapshot of the files: they fully mirror the repository.<br \/>\nThus if any server dies, and these systems were collaborating via it, any of the client repositories can be copied back up to the server to restore it.<br \/>\nEvery clone is really a full backup of all the data.<\/p>\n<p><strong>GIT<\/strong><\/p>\n<p>Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.<br \/>\nGit  is a version control system that is used for software development and other version control tasks. As a distributed revision control system it is aimed at speed, data integrity, and support for distributed, non-linear workflows. Git was created by Linus Torvalds in 2005 for development of the Linux kernel, with other kernel developers contributing to its initial development.<\/p>\n<p><strong>Some of the goals of the new system were as follows:<\/strong><br \/>\nSpeed<br \/>\nSimple design<br \/>\nStrong support for non-linear development (thousands of parallel branches)<br \/>\nFully distributed<br \/>\nAble to handle large projects like the Linux kernel efficiently (speed and data size)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is Version Control? Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later. It allows you to revert files back to a previous state, revert the entire project back to a previous state, compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-28","post","type-post","status-publish","format-standard","hentry","category-git"],"_links":{"self":[{"href":"https:\/\/www.sureshselvam.com\/index.php\/wp-json\/wp\/v2\/posts\/28","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sureshselvam.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sureshselvam.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sureshselvam.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sureshselvam.com\/index.php\/wp-json\/wp\/v2\/comments?post=28"}],"version-history":[{"count":5,"href":"https:\/\/www.sureshselvam.com\/index.php\/wp-json\/wp\/v2\/posts\/28\/revisions"}],"predecessor-version":[{"id":35,"href":"https:\/\/www.sureshselvam.com\/index.php\/wp-json\/wp\/v2\/posts\/28\/revisions\/35"}],"wp:attachment":[{"href":"https:\/\/www.sureshselvam.com\/index.php\/wp-json\/wp\/v2\/media?parent=28"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sureshselvam.com\/index.php\/wp-json\/wp\/v2\/categories?post=28"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sureshselvam.com\/index.php\/wp-json\/wp\/v2\/tags?post=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}