Editing 1597: Git
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 8: | Line 8: | ||
==Explanation== | ==Explanation== | ||
− | + | {{incomplete|Title text - with he name of the friend not explained yet.}} | |
− | {{ | ||
− | + | This comic is a play on how git, a popular version control system, is misused by people who have a very poor understanding of its inner workings. Git is a particularly apt target for such a joke due to its widespread use and significant discrepancy between perceived simplicity and complex underlying design. Tutorials for git tend to make extensive use of a cozy bootstrap layout and deal only with the most basic commands to get started, which can fool a novice to believe that git can be used appropriately without extensive studying. As this is rarely the case, a large group of git users (including Cueball) have a knowledge of git that extends to memorizing set of commands rather than a conceptual understanding of what those commands actually do. As this habit eventually will lead to a corrupt working tree, Cueball suggests that Ponytail keeps an alternative copy of her project outside git which, of course, defies every purpose of employing a version control system to begin with. | |
− | |||
− | + | {{w|Git (software)|Git}} is a {{w|Version control|version control}} system often used to track changes to (usually) plain text files, such as computer code. Within a folder and its subfolders, the user can tell Git which files to keep track of changes for. All the files that are being tracked in this manner make up a repository. Internally, Git works by saving entire snapshots of the files hashed by contents so that the same file content is only stored once, rather than creating a new copy each time the user "commits" the current version of the code. This approach allows the user to switch between various versions of the code fairly quickly. However, this can be confusing for new users because when changing between versions, Git effectively rewrites the files under its control to match that version - one file may have several different versions depending on which state Git has set it to, but only one of these versions is visible at any given moment. The others are not hidden or moved, they do not exist until Git modifies the file to match that version. | |
− | + | In addition to allowing the user to track changes to the files over time using "commits" (versions of the files stored by the user), Git also allows the user to develop several versions of the files in parallel using "branches" (mentioned in the title text). This allows a programmer to, for example, keep a stable, functioning version of their code in one branch, while developing a new feature in a separate branch. When the new feature is ready, Git provides tools to efficiently "merge" the changes from the development branch back into the main branch. While powerful, there are also several pitfalls which can confuse users. For example, a file may have only been committed in one branch (so it is only visible in that branch), causing a user who has switched to a different branch to think that file was lost somehow. | |
− | + | Sharing a Git repository with other users is done through a remote repository, such as [https://github.com/ GitHub], [https://about.gitlab.com/ GitLab], or one set up by the user themselves. This remote repository acts as a central location through which collaborators share their work. Changes do not automatically propagate between users; instead, once someone has changes they are ready to share, they must upload ("push" in Git terminology) their changes to the remote repository. Other users can then download ("pull") those changes. This allows each user complete control over when changes are applied to their version of the files. Once one user has pushed his or her changes, all other users will need to merge those changes into their code before they can push. Depending on how much the changes conflict, Git may be able to automatically combine both users' versions, or the user may need to do so manually. | |
− | + | In programming, Git is a very popular way to share source code of programs between computers and users and thus work on projects collaboratively. | |
− | |||
− | + | However, problems often arise when, for example, one attempts to upload code to a file someone else has already edited. | |
− | + | Git has quite a few tricks to handle "merging" itself. | |
− | |||
− | |||
− | |||
− | + | One way of simplifying collaboration is to work in a different "branch" than other collaborators. All branches independently track their changes and can be viewed independently of each other. Only when you successfully "merge" (there we go again) individual branches together will you see other collaborators' "commits" in your working set of files. | |
− | |||
− | + | But, due to the complex nature of Git (and its notoriously counter-intuitively named commands), a large portion of users are unable to use it beyond basic commands. They consider it usually much more efficient just to save the code to a different file, download a newer copy, and then re-apply their original changes to the new copy than to try and understand and use Git's own convoluted built-in commands to attempt to fix it properly. | |
− | |||
− | |||
− | + | Git was originally created by {{w|Linus Torvalds}}, the same person who originally created {{w|Linux}}. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Transcript== | ==Transcript== | ||
:[Cueball points to a computer on a desk while Ponytail and Hairy are standing further away behind an office chair.] | :[Cueball points to a computer on a desk while Ponytail and Hairy are standing further away behind an office chair.] | ||
− | :Cueball: This is | + | :Cueball: This is Git. It tracks collaborative work on projects through a beautiful distributed graph theory tree model. |
:Ponytail: Cool. How do we use it? | :Ponytail: Cool. How do we use it? | ||
:Cueball: No idea. Just memorize these shell commands and type them to sync up. If you get errors, save your work elsewhere, delete the project, and download a fresh copy. | :Cueball: No idea. Just memorize these shell commands and type them to sync up. If you get errors, save your work elsewhere, delete the project, and download a fresh copy. | ||
{{comic discussion}} | {{comic discussion}} | ||
+ | |||
[[Category:Comics featuring Cueball]] | [[Category:Comics featuring Cueball]] | ||
[[Category:Comics featuring Ponytail]] | [[Category:Comics featuring Ponytail]] | ||
[[Category:Comics featuring Hairy]] | [[Category:Comics featuring Hairy]] | ||
+ | [[Category:Programming]] | ||
[[Category:Computers]] | [[Category:Computers]] | ||
− | [[Category: | + | [[Category:Internet]] |
− |