On Thu, 2013-05-30 at 22:29 -0700, PJ Weisberg wrote:
> On May 30, 2013 6:32 PM, "Paul Smith" <p...@mad-scientist.net>  
> > However, I've already pushed my branch to master.  I know rebasing stuff
> > you've already pushed is considered a no-no in general, but I can't
> > avoid it.  Does anyone have suggestions for how to make this work
> > better?  Should I be rebasing to a brand new branch, then merge that to
> > master?  Just rebase directly to master?  None of the above?  Something
> > else entirely?
> 
> I don't understand why you don't do all this cleanup *before* you
> merge into master.

I DO want to do the cleanup before merging to master.  If you mean do
the cleanup before pushing to the git repo, I can't do it all because
it's not until after I push that I can detect build issues on platforms
I don't have access to, get feedback in a code review, etc.  Sometimes
it's useful to keep these changes as separate commits, but often it's
not.

> There's no problem with rebasing published history per se, only with
> rebasing history that someone else might have pulled into their own
> history.  You can rebase to your heart's content as long as you're on
> your own branch, even of it does have to live on a remote server.

Certainly others will have pulled the branch: it's in the master repo
after all.  I guess it's unlikely they'll have checked out my dev branch
though, typically.

Also, it's not quite so simple: our server has gitolite installed and
"push -f" to force move a branch has been disabled.  I guess I can do it
in two steps: first delete the branch then add it again.


Lastly, I've played with rebase -i.  It's powerful, but not quite what I
was hoping for.  I wonder if anyone has any pointers for something like:

You start a "rebase --diff" (or whatever) operation.  It shows each diff
that is part of the branch, and allows you to assign that diff (or just
an individual chunk of the diff) to a particular commit, or delete the
diff or chunk.  It walks through each chunk of each diff like this.  At
the end any commit with no chunks assigned will be deleted, and the
branch will be rebased using the remaining commits.  Comment editing,
etc. would need to be possible.

Since you're actually just looking at chunks in the diff between the
first commit and last commit, and not any intermediate commits, I don't
think it's possible to get a conflict (although you obviously could get
intermediate commits which don't build, if you're not careful, making
"git bisect" somewhat tricky).

For some kinds of commits, where there are ordered incremental
(overlapping) changes that you wanted to preserve this wouldn't work.
But if you have a set of non-overlapping changes to different areas
needed to make a change or set of changes, it might be a good way to
handle rebase.

-- 
You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to git-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to