Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

This question already has an answer here:

I often read/overhear that good commit messages should be written in present tense or to use imperative mood when describing the change eg. Fix xyz instead of Fixed xyz.

What are the advantages of doing so? Are there differences between the various VCS (I mostly read these about git but that maybe because I mainly work with git)?

share|improve this question

marked as duplicate by Bart van Ingen Schenau, MichaelT, gnat, jwenting, Wayne M Jun 20 '14 at 21:11

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

I didn't see that one. I leave it to a moderator to close this question. Things might have changed though, which I was trying to get at in the question. I for myself see a trend to write present tense because of git. Maybe just reword the question? – oschrenk Jul 20 '12 at 15:10
up vote 3 down vote accepted

Another angle to consider is your commit's scope and your perspective (primarily for distributed VCS)... You can create all the local history you want, but it only becomes past tense once it's merged into the primary code branch.

In other words, the project lead needs to review it, and they apply my commit to "fix YYY". The bug itself only becomes "fixed" once someone authorative approves it and merges it in to the project.

For centralized systems, past tense seems more accurate, at least from this perspective.

share|improve this answer

As I understand it, the present tense means that the commit itself fixes the issue, not the developer which could be implied by using the past tense -"the developer fixed the issue".

share|improve this answer
I believe it would be the code being committed that fixes the issue, not the action of the commit. The comment is stating that this unit of code fixes (in part or in whole) XYZ. – Matthew Flynn Jul 20 '12 at 16:51
Yes, I agree and for me that's what the "commit" is - the set of things being committed. – Otávio Décio Jul 20 '12 at 16:58

When you use "Fixed XYZ" you can import it straight to your changelog. For example PHP Changelog.


  • Core:
    • Fixed bug #65254 (Exception not catchable when exception thrown in autoload with a namespace).
    • Fixed bug #65088 (Generated configure script is malformed on OpenBSD).
    • Fixed bug #65108 (is_callable() triggers Fatal Error).
    • Fixed bug #65035 (yield / exit segfault).
    • Fixed bug #65161 (Generator + autoload + syntax error = segfault).
    • Fixed bug #65226 (chroot() does not get enabled).
    • hex2bin() raises E_WARNING for invalid hex string.
  • OPcache:
    • Fixed bug #64827 (Segfault in zval_mark_grey (zend_gc.c))...
share|improve this answer

As was mentioned a little, for centralized versioning systems, past tense seems more accurate (Ex: Fixed the looping issue). Because, it expressed the committed and completed work.

Otherwise, it would sound like TODO List (Ex: Fix the looping issues), that needs to be done in near future.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.