1296: Git Commit

Explain xkcd: It's 'cause you're dumb.
(Redirected from 1296)
Jump to: navigation, search
Git Commit
Merge branch 'asdfasjkfdlas/alkdjf' into sdkjfls-final
Title text: Merge branch 'asdfasjkfdlas/alkdjf' into sdkjfls-final

[edit] Explanation

This comic refers to the Git source code revision control software, which saves earlier versions of files and folders for later access into a special repository. This comes handy when you want to try out whether an idea works (branching). Further, you can collaborate with others by use of remote repositories.

A commit is a saved version in a Git repository; a commit comes with a message that is supposed to describe what the commit contains, similar to the edit summaries used on MediaWiki sites such as explain xkcd and on this explanation. Randall, however, finds himself losing interest in the commit messages the more code he writes and winds up just using placeholder text or jokes to himself. Presumably, this is because his separate commits are part of a large effort that can't be effectively summarized, and where there's no particular urgent need to differentiate the commits. Seeing as in this context 12 hours of coding can be considered "dragging on," it's safe to assume that the kinds of commits Randall is talking about are not for some major in-production project, nor for something that a lot of other people are working on. In both of those cases, one would be much more likely to use descriptive commit messages, since you want to flag things that are important, either from a technical standpoint (e.g. "fix the thing that's making the site not work") or for the benefit of others who want to know which commits they should be paying attention to.

The phrase "Merge branch 'asdfasjkfdlas/alkdjf' into sdkjfls-final" mimics the phrasing used by Git. A branch is a specific sequence of commits which can be made in parallel to other branches of development, and later merged. Here, we see that Randall has also gotten lazy with his branch names: "branch 'asdfasjkfdlas/alkdjf'" might be the series of two commits starting with "here have code". "sdkjfls-final" could be the branch indicated by the vertical string of circles on the left, into which the other more branch is merged in commit "adkfjslkdfjsdklfj".

Most git tools show the commit history with the most recent commits first, so showing the oldest first like this would require something like the --reverse option.

The comments go from being pretty detailed as to his thoughts and reasons for the code ("enabled config file parsing"), to relatively uninformative summaries ("misc bugfixes"), to completely uninformative words ("more code"), and then finally he doesn't even bother trying to come up with words, instead just hitting a key ("aaaaaaaa") or semi-random keys ("adkfjslkdfjsdklfj"), then goes back to typing words but words that have a bit of a craziness to them rather than having anything to do with describing the code ("my hands are typing words"). The "adkfjslkdfjsdklfj" line and similar garbage in the title text comes from having your hands on the "home row" on a standard QWERTY keyboard, then hitting "random" keys without moving your fingers from their standard home row positions. The keys you hit "randomly" will be combinations of A, S, D, and F on the left hand, and J, K, L, and ; on the right hand (although the ; key seems to have been avoided, possibly because without the presence of surrounding quotes a ; character will end the comment). It is common to see stuff like that when a person is required to type something — i.e. a mandatory field — but they have no interest in typing anything meaningful or no idea what to write, so they just hit the easiest keys to hit and call it done.

[edit] Transcript

  Comment Date
(main) created main loop & timing control 14 hours ago
(main) enabled config file parsing 9 hours ago
(main) misc bugfixes 5 hours ago
(main) code additions/edits 4 hours ago
(main) more code 4 hours ago
(branch) here have code 4 hours ago
(branch) aaaaaaaaa 3 hours ago
(main) adkfjslkdfjsdklfj 3 hours ago
(main) my hands are typing words 2 hours ago
(main) haaaaaaaaands 2 hours ago

As a project drags on, my Git commit messages get less and less informative.

comment.png add a comment!

Discussion

Note that in most (all?) graphical history viewers for Git time flows from bottom up, i.e. newest commits are on top, not on bottom as in this comics --JakubNarebski (talk) 07:21, 27 November 2013 (UTC)

I can relate. While I start with reasonable commit messages every day, working on one feature often results in

(good description of feature)
bugfixes for (description of feature)
another bugfix
damn
should work now
grrr
typo
I hate (some used library)

when I either need commit to deploy or I'm so sure it will work I don't test it deeply enough. If I would be using git, these could be merged, but I'm not. -- Hkmaly (talk) 10:51, 27 November 2013 (UTC)

What does the line graphic in the left-most column represent? Smperron (talk) 13:03, 27 November 2013 (UTC)

This is the Git commit graph, in various ways of looking at a commit history git draws a graph like that to show branching and merging. 141.101.98.229 (talk) (please sign your comments with ~~~~)

Nice explanation folks. Makes the comic understandable/humorous to a non-coder. (unless you count VBScript) --DanB (talk) 13:16, 27 November 2013 (UTC)

Nothing wrong with VBScript, though "coder" could be stretching the definition by a bit. (git it?) JChrisCompton (talk) 19:41, 5 December 2013 (UTC)
You seem to understand it pretty well now, DanB, judging by your edit history. --Aaron of Mpls (talk) 07:56, 18 April 2014 (UTC)

Commit Cloud is a relevant tool to read commit messages from Github and build a word cloud from the most-used words. 108.162.214.41 (talk) (please sign your comments with ~~~~)

I'm very glad I'm not the only person this happens to. --Okofish (talk) 15:23, 27 November 2013 (UTC)

Regarding "although he seems to have avoided the ; key for some reason": A likely reason is that messages are passed on the command line with -m and without surrounding quotes to save time, and the ; ends the command line. 108.162.221.54 06:03, 1 December 2013 (UTC)
Personal tools
Namespaces

Variants
Actions
Navigation
Tools

It seems you are using noscript, which is stopping our project wonderful ads from working. Explain xkcd uses ads to pay for bandwidth, and we manually approve all our advertisers, and our ads are restricted to unobtrusive images and slow animated GIFs. If you found this site helpful, please consider whitelisting us.

Want to advertise with us, or donate to us with Paypal or Bitcoin?