Presumably the impetus is that if you fix a bunch of small things in a single commit it might be easier to compile the list of small things you changed by noting them as comments as you fix them rather than trying to remember them after the fact when it comes time to write a commit log for that commit.
That said, philosophically I'd personally prefer to just commit the small features individually as a set of small commits, therefore you get a better git blame/praise experience with the end result, but I realize there is a wide spectrum of preferences on commit size and style.
Yes, that was my intention when making this project. I prefer the practice of making very small changes and committing frequently with opulent use of branches.
However, many of my peers and co-workers have a hard time following the small-commit workflow, so this project is really for them.
Being able to mark small (but significant) changes in your code as you code definitely helps reduce some ambiguity in commit messages.
Some feedback on that regard - if you could note line numbers or anything really w/ some of these it would probably help more than just messages. Eg "Concatenated strings in HelloWorld.js#12"
Presumably this is so you don't forget about a bunch of small changes when making a large commit. However, for me, right before I do a commit, I always do a diff to make sure what I'm about to commit is what I intended to, which has the nice side effect of seeing all the changes and reminding me for the commit message.
I do that as well, but in my branch. When I merge to master I tend to squash into bigger commits so as not to pollute the timeline so much. If someone really needs to see the small commits they can always look at the branch.
I do a -p and work my way through all of the hunks, pulling out a cohesive "story" of multiple separate commits from the work that I did, sometimes editing hunks as I go to "backport" some changes to fit other parts of the story.
I use SourceTree, which has the ability to stage individual lines (I know, git cli can as well). So even if I work on 2-3 things at the same time, it is trivial to select the correct changes for the commit.
I use git cola for the same. It's a really light weight little tool that's surprisingly feature complete.
I usually make a bunch of changes at once. Following a break I review the changes and break them up into logical commits.
I aim do break up changes so that the commit log can be read like a book and. I can guarantee that not a single commit contains hidden surprises or unrelated changes.
I don't know how most devs get by with just the CLI. A lightweight gui makes commits and reviewing the history tree so much easier.
It could probably be abused in the way you describe. But I'm not sure it encourages it. I think it's a clever idea and seems like it could be handy even if you do nice, tidy commits.
Agreed. My motivation for making this was the complete lack of detail in my peers' commit messages. They had no problem writing a semi-descriptive commit title, but glossed over numerous (yet small) changes entirely.
Ironically, this project I would not use myself! Mostly because I am in the practice of the Git workflow.
My goal was to make something which was easy to use, and gets someone in the habit of thinking about/listing all changes in a commit.
I certainly hope I'm not encouraging the bad behavior I'm trying to prevent!
27 comments
[ 3.2 ms ] story [ 60.1 ms ] threadThat said, philosophically I'd personally prefer to just commit the small features individually as a set of small commits, therefore you get a better git blame/praise experience with the end result, but I realize there is a wide spectrum of preferences on commit size and style.
However, many of my peers and co-workers have a hard time following the small-commit workflow, so this project is really for them.
Being able to mark small (but significant) changes in your code as you code definitely helps reduce some ambiguity in commit messages.
This is great feedback, thank you!
Git blame displays the last commits that updated your files lines.
This gives you the ability to write your commit description while you code.
This builds the initial commit message when you want to commit the pending changes in the index.
Is this not the common way most people commit?
git commit -v displays the patch below the message part you're writing, so that you can review the patch as you write the message.
I usually make a bunch of changes at once. Following a break I review the changes and break them up into logical commits.
I aim do break up changes so that the commit log can be read like a book and. I can guarantee that not a single commit contains hidden surprises or unrelated changes.
I don't know how most devs get by with just the CLI. A lightweight gui makes commits and reviewing the history tree so much easier.
i guess its still very useful if you are working somewhere where that bad practice is enforced.
maybe encourage is the wrong word, but it seems like a useless tool if you are doing things in (what i perceive to be) the right way.
Ironically, this project I would not use myself! Mostly because I am in the practice of the Git workflow.
My goal was to make something which was easy to use, and gets someone in the habit of thinking about/listing all changes in a commit.
I certainly hope I'm not encouraging the bad behavior I'm trying to prevent!
i can still see it being useful, like i said. well done for making something and sharing it like this.