“The people need to know,” I mutter to myself, forgetting for a moment that my blog has no audience. “THE PEOPLE NEED TO KNOW!” Some people, I have discovered, labor under the misconception that git commit messages are written in the imperative mood. This is incorrect. They are actually written in the bare infinitive. Let me elaborate. Git commit messages are usually written in the form "update the Foo, rewrite the Bar". This is cromulent and efficient. Some people think this is in the imperative mood, as though you are saying, "Computer! Update the Foo, rewrite the Bar!". But actually it's in the bare infinitive, as though you are saying "what the git commit does is update the Foo, rewrite the Bar". (The rest of the post is further, perhaps unnecessary, elaboration on this idea.) I'll explain what the infinitive form of a verb is, and why it's appropriate for a git commit message. The infinitive form of a verb is, in a way, and especially in English, the most basic form of a verb. This is because it is non-finite: it does not indicate number or person. It could be about anyone(s); or, more precisely, it is about no one. Compare the infinitive "to run" versus "he runs"—the latter is marked as third-person. In English, the infinitive also lacks tense (eg "to run" vs "will run") and mood (eg "to run" vs "would have run"). So, it's basically the purest form of the verb, lacking any conjugation, expressing nothing but the action itself. This is perfect for a git commit message, which speaks to the changes the commit makes, in a timeless sense (commits can be applied, removed, or reapplied, at any time, by anyone). And what do I mean by "bare infinitive"? I will explain. Infinitives are typically written in English as "to"+verb when they are being discussed directly. This is referred to as the "full infinitive". Example usage of a full infinitive: He wants to run. (Note: not "he wants to runs".) But this is basically just an affectation. You can also omit the "to" from the infinitive, and get the "bare infinitive", which is just like the infinitive in most respects. Example: He can run. (Note: not "he can runs".) The full infinitive and bare infinitive are used in different places in our language, but in my opinion this is basically just arbitrary (like a lot of grammatical restrictions). Both are infinitive. You might notice that the bare infinitive looks like a lot of other forms of the verb. This is true. This is because a lot of verb conjugations in English are "unmarked", which is to say, they don't change from the base form of the verb. The "run" in "to run" looks a lot like the indicative "I run" and the imperative "run!". Although these utterances fall into different grammatical categories, the verbs in them are not distinguished by different sounds or letters. This is precisely why it's very easy to become mistaken and think that git commit messages are in the imperative and not the bare infinitive. (Side note: "I will run" is a sentence in the future tense, but the "run" in "will run" is, in fact, in the bare infinitive. The "will" takes a bare infinitive verb as an argument to produce a verb phrase that is in the future tense.) There are various different tenses and moods one could write a git commit message in, but I think pretty much everyone settles on the bare infinitive. This is because it's grammatically appropriate and efficient. (It's also because programmers write function names in the bare infinitive!) At first, I wrote my git commits as complete sentences. "This commit does blah blah blah". This was not efficient. Then I wrote them in the indicative, with the commit as the implied subject. "Updates the Foo, rewrites the Bar". This was still an unnecessary inflection. Finally, I settled on writing them the same way as everyone else: "update the Foo, rewrite the Bar". For a while, I thought "update the Foo, rewrite the Bar" was also the indicative, and the implied subject was simply "I" ("I update the Foo, I rewrite the Bar"); but I no longer feel this way. For one thing, when I write such messages I don't think of myself as expressing some sentence with myself as the subject. For another thing, when the sentence contorts in such a way that I would usually insert the subject, I don't feel like inserting "I"; so the subject can't be me. Example: imagine I'm writing a commit that may succeed or fail in updating the Foo (I'm making my best attempt at fixing something, say). For its message, I would write: "update the Foo, if this succeeds". I would never write "update the Foo, if I succeed", nor "update the Foo, if you succeed". Note that in "update the Foo, if this succeeds", my point is NOT that "this" is the grammatical subject of the commit message. I don't think that's true. (For one thing, "this" and "update" don't grammatically agree; it would have to be "this updates" or "these update". And also if "this" were the implied subject, you could just write "if it succeeds", which I would also never do.) I don't think the message has a grammatical subject. That's my point. It's just a bare infinitive verb phrase, with no subject. It can have a clause talking about arbitrary things, with arbitrary grammatical subjects, like "this". But the most natural way to express extra information about the subject of the message, if the commit message itself did have a subject, is not taken. This proves it doesn't have a subject. The subject does not recur because we weren't talking about a subject in the first place. (On the other hand, maybe you, personally, would write those git commit messages I would never write. You are the master of your own destiny.) I think most people agree git commit messages are/should be written in the way I've described; it's just that "bare infinitive" isn't a very well-known concept, so they describe it as "imperative", a visually-identical grammatical mood.