Editing 1597: Git

Jump to: navigation, search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 9: Line 9:
 
==Explanation==
 
==Explanation==
 
===This is Git===
 
===This is Git===
{{w|Git (software)|Git}} is a version control system, used to manage the code in many millions of software projects. It is very powerful, and was amongst the first widely adopted tools to use a distributed version control model (the "beautiful {{w|graph theory}} {{w|Tree (graph theory)|tree model}}"), meaning that there is no single central repository of code. Instead, users share code back and forth to synchronise their repositories, and it is up to each project to define processes and procedures for managing the flow of changes into a stable software product.
+
{{w|Git (software)|Git}} is a version control system, used to manage the code in many millions of software projects. It is very powerful, and was amongst the first widely adopted tools to use a distributed version control model (the "beautiful [https://en.wikipedia.org/wiki/Graph_theory graph theory] [https://en.wikipedia.org/wiki/Tree_(graph_theory) tree model]"), meaning that there is no single central repository of code. Instead, users share code back and forth to synchronise their repositories, and it is up to each project to define processes and procedures for managing the flow of changes into a stable software product.
  
 
===How do we use it?===
 
===How do we use it?===
Although very powerful, the command line of Git is notoriously difficult to master. Dozens of blog posts and websites (see [http://think-like-a-git.net/epic.html], [http://stevebennett.me/2012/02/24/10-things-i-hate-about-git/]), and even books ([http://blog.anvard.org/conversational-git/chapter-01.html], [http://git-scm.com/book/en/v2]) have been written to help users navigate this complexity.  
+
Although very powerful, the command line of Git is notoriously difficult to learn and master. Dozens of blog posts and websites (see [http://think-like-a-git.net/epic.html], [http://stevebennett.me/2012/02/24/10-things-i-hate-about-git/]), and even books ([http://blog.anvard.org/conversational-git/chapter-01.html], [http://git-scm.com/book/en/v2]) have been written to help users navigate this complexity.  
  
The difficulty of using Git in common situations is contradicted by the apparent simplicity of its use in tutorial-style situations. Committing and sharing changes is fairly straightforward, for instance, but recovering from situations such as accidental commits, pushes or bad merges is difficult without a solid understanding of the rather large and complex conceptual model. For instance, three of the top five highest voted questions on Stack Overflow are questions about how to carry out relatively simple tasks: undoing the last commit, changing the last commit message, and deleting a remote branch.
+
The difficulty of using Git in common situations is belied by the apparent simplicity of its use in tutorial-style situations. Committing and sharing changes is fairly straightforward, for instance, but recovering from situations such as accidental commits, pushes or bad merges is difficult without a solid understanding of the rather large and complex conceptual model. For instance, three of the top five highest voted questions on Stack Overflow are questions about how to carry out relatively simple tasks: undoing the last commit, changing the last commit message, and deleting a remote branch.
  
 
This comic thus explores the difference between the idealised view of Git's architecture, and its actual typical usage. Tutorials for Git tend to use simple systems in their examples, and only deal with the most basic commands to get started, which can create the misleading impression that Git can be used effectively without extensive study.
 
This comic thus explores the difference between the idealised view of Git's architecture, and its actual typical usage. Tutorials for Git tend to use simple systems in their examples, and only deal with the most basic commands to get started, which can create the misleading impression that Git can be used effectively without extensive study.
Line 73: Line 73:
 
In short: programmers use {{w|Version control|version control systems}} to track changes to code. Most of these version control systems are quite similar and easy to learn if you already know another one. Git is a version control system based on completely different principles, and most programmers find it difficult to wrap their heads around it (although Git also offers a large number of nontrivial benefits over standard version control systems, which is why it is used). Cueball is one of those programmers.
 
In short: programmers use {{w|Version control|version control systems}} to track changes to code. Most of these version control systems are quite similar and easy to learn if you already know another one. Git is a version control system based on completely different principles, and most programmers find it difficult to wrap their heads around it (although Git also offers a large number of nontrivial benefits over standard version control systems, which is why it is used). Cueball is one of those programmers.
  
== Trivia ==
+
This comic is referenced on https://what-if.xkcd.com/153/, the page where Randall, due to a problem with git, erroneously posted a draft of his "What If?" piece on peptides. As of December 15th, 2016 the page reads:
 
+
This comic was referenced in an earlier version of the page for ''what if?'' #153, where Randall, due to a problem with git, had at one time erroneously posted a draft of his ''[[what if? (blog)|what if?]]'' piece on peptides. As of December 17th, 2016 the page read:
+
''Whoops''
 
+
''This article is still in progress. An early draft was unintentionally posted here thanks to Randall's troubled approach to [[Git|git]], and it took a little bit to get everything sorted out and rolled back. Sorry for the mixup!''
:;Whoops
 
:This article is still in progress. An early draft was unintentionally posted here thanks to Randall's {{xkcd|1597|troubled approach to git}}, and it took a little bit to get everything sorted out and rolled back. Sorry for the mixup!
 
 
 
On January 30, 2017, the page was updated with a completed article, ''{{what if|153|Hide the Atmosphere}}''.  As of September 23, 2019, the page no longer contains any reference to this comic or Randall's earlier mistake with Git (or anything related to Git, for that matter).
 
  
 
The comic [[1296: Git Commit]] also features Git.
 
The comic [[1296: Git Commit]] also features Git.
Line 94: Line 90:
 
[[Category:Comics featuring Ponytail]]
 
[[Category:Comics featuring Ponytail]]
 
[[Category:Comics featuring Hairy]]
 
[[Category:Comics featuring Hairy]]
 +
[[Category:Programming]]
 
[[Category:Computers]]
 
[[Category:Computers]]
[[Category:Programming]]
+
[[Category:Internet]]
[[Category:Version Control]]
 

Please note that all contributions to explain xkcd may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see explain xkcd:Copyrights for details). Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel | Editing help (opens in new window)

Templates used on this page: