Hacker News new | ask | show | jobs
by solutionyogi 5319 days ago
Line Committing is a killer feature. Right now, I force myself to check in code for the smallest change because I want my commit to reflect a meaningful change. I could certainly save a lot of time if I had the flexibility to make bunch of changes in the file and then commit them in separate hunks.
6 comments

You can already from the command line! git add -p (short for --patch) will let you individual hunks of a file to the staging area.
GitX supports that. I mainly use the command line for working with git, but I use GitX for committing because it has a great UI for seeing diffs and staging individual chunks.
You've always been able to do that via the command line (`git add -p <file>`) but it's definitely great to see it in a more user friendly form.
Sort of. -p considers consecutive lines a single hunk. Often, that's not what I want. Luckily, there is magit: http://philjackson.github.com/magit/
You can split the hunks into smaller ones.
You can split hunks until they're consecutive lines. You can't split more granularly than that with -p. You'd need to edit the patch, either directly or with git gui or similar.
And you can also edit the patch manually.
I resisted the edit option of git-add -p for a long time because I was afraid of messing something up with a low level tool... big mistake! So easy to use!
Plus if you make a patch that doesn't apply it will just error out and you can try again. And if you add anything extra by mistake you can easily back it out with something like git reset HEAD <file> or git reset -p
Yes, I am aware of git add -p but if you deal file with 500 lines of code, it's easier to have a UI to select lines you want to commit.
By the way, is it possible to have git add -p show uncommitted files, like darcs does?
Not directly, but you can use git add -p for that. Although I don't think you get to review it first.
If you use emacs, magit-mode is great for this.

http://philjackson.github.com/magit/

[shameless plug] http://git-cola.github.com/ can do by-line and by-hunk editing of both the index and work tree. It's had this feature since early 2008 ;-)

I find it easier to do it with a GUI vs. with `git add -p`.

There is also "git add -i" for that.