Thanks for the response
Git is fun, isn't it ?
He he -- once I figure out how to do something I'm stuck on, perhaps so.
Rebase, not as much. Maybe because I'm mostly working on my own, I don't mind having a few meaningless commits.
I take the log rewriting features to be a longer term investment -- for those days when I don't remember so well what was done before (wait...isn't that most days?).
One of the benefits I'm experiencing through the use of DVCS has to do with reviewing code -- at commit time, when viewing the log, etc. I find it tends to uncover opportunities for improvement. When one's log consists of commits that are easy to understand and are focused, I find the reviewing tends to be easier. I am guessing that modifying past commits can aid in this process.
Apart from that, yes, stashing can be extremely useful. E.g. for those times where I find a bug that should be fixed before pursuing some coding : stash the current work, do the bug fixing, come back to previous coding by reapplying stash.
Definitely seems like a good time to use stashing.
What I've been using it mostly for is the following sort of situation:
- Working on feature A
- Realize I need feature B
- Stash feature A work
- Implement feature B and test
- Commit feature B and test
- Apply saved stash to continue work on A
Before learning how to use the stash, I was using the Index Editor to selectively commit -- but I've found that after one accumulates enough changes, picking out the relevant bits can become error-prone and overwhelming. He he...I need better planning too.
Still trying to develop the habit of pausing to stash before starting work on something unexpected though.
You mentioned renaming in a previous post. I still use the command line when I want to do an explicit file rename. But I usually don't have to as Git detects those if you're careful not committing renames with a bunch of other changes.
I use the GUI but manually remove and add. Still seems like it'd be nice if there were explicit support for renaming!
SmartGit proved to be quite user friendly, stable and helpful. Used it almost exclusively, together with TortoiseGit which has some great features implementations too (I especially like the fact that I can select and copy commits from the log view and I'll get a nice clean copy of all of them, with the comments... I use that for quickly creating reports). Also, SmartGit now supports Hg, which is a good thing for those of us who use mercurial !
It's nice to have that Hg support
As I try hard not to use applications that modify the registry, I have not really used TortoiseGit -- a pity, as it seems so nice. I wonder if there's a way to get it to work with 3rd party Explorer alternatives...
Apart from interactive rebasing via the command line, I've been using magit in Emacs a bit. Once I got the hang of the UI idea, I've been finding it to be pretty decent.
FWIW, the following screencast was very helpful in getting started: Meet Magit