Re: Merging commits together into a super-commit
From: J. Bruce Fields <hidden>
Date: 2016-06-15 22:43:09
On Thu, May 10, 2007 at 11:30:37AM -0700, Carl Worth wrote:
So, compared to the rebase usage, this does add two commands for bookkeeping the original state and cleaning it up. But the syntax for the cherry-pick part is quite a bit simpler than the original rebase at least.
Yeah, something like that would be great. I think I've seen others suggest similar syntax before, so it's probably just a question of one of us who want this finding time to write the patches.
Also, "reset --hard" isn't actually what I want in this case. I'd like this recipe to use something that would move the current branch to some other point, but in a safe way, (that is, not destroy any uncommitted changes that might exist at the beginning). I don't have any proposal for what that would be.
The tag creation and cleanup could get to be annoying too. You could scrounge through the reflog instead of using a temporary tag, but depending on the amount of --amend'ing and cherry-picking you do the reflog entry may end up in a different place each time, so it's probably hard to make this automatic.
stg - This probably works great if you're using it as a primary
interface. But trying to use it as a quick one-off when
generally using core git does not work well at all. Instead of
the two "git tag" commands in my recipe above, an stg recipe
would involve a lot of additional bookkeeping with stg init, stg
uncommit [N times for fixing a commit N steps back in the
history], stg goto, stg push, etc.I also didn't like having to come up with another name for each patch--I'd rather just run git-log or gitk and cut-n-paste the sha1. For kernel work I started out working with multiple (sym- or hard-linked) trees, then used akpm's patch scripts, then stgit. I think I'm happiest just using plain git. The one thing I've never been good at is keeping the history of the patch series itself. --b.