I frequently come across this workflow pattern: i queue up some new change in a topic brach, and there's a test failure within the next 60 minutes or so. I know which file causes the breakage - say kernel/softlockup.c - but i dont know the precise commit ID. I want to revert the change in the integration branch as quickly as possible via a command - without having to wade through 'git log' info and cut&paste-ing commit IDs.
I usually know the topic branch name where the breakage originates from, so i can do this in the integration branch:
git revert core/softlockup
and it does the right thing and the tests can continue while i take more time in the topic branch to repair the damage there. (at which point i can integrate the fixed/updated commit on top of the reverted commit in the integration branch.)
But often i have other changes queued up in that topic branch as well - and the best, most finegrained information i have about the identity of the commit is the filename it went into.
So i have to do something like:
git revert $(git log -1 --pretty=format:"%h" kernel/softlockup.c)
(tucked away in a tip-revert-file helper script.)
But it would be so much nicer if i could do the intuitive:
git revert kernel/softlockup.c
Or at least, to separate it from revision names cleanly, something like:
git revert -- kernel/softlockup.c
Would something like this be possible in generic Git? It would sure be a nice little touch that i would make use of frequently.
Or is it a bad idea perhaps? Or have i, out of sheer ignorance, failed to discover some nice little shortcut that can give me all of this already?
Thanks,
Ingo