> On Mar 2, 2021, at 9:24 PM, Mark Adams <[email protected]> wrote:
> 
> Ah, 'git graph' I will try that next time.
> 
> I use 'git rebase -i HEAD~N', but you need an N. 
> 
> After you 'git rebase origin/main' you get other commits interspersed in with 
> yours,

   I do not get this. I thought that rebasing with main put all the main 
changes in before your commits. I have never seen any interspersed, so I do not 
understand this.

  Barry

> so I try to rebase -i before rebasing over main. Then rebase over main and 
> you have a clean and updated branch. 
> 
> Pick N to be large enough to cover the commits that you want to clean up. 
> Don't touch the ones that are not yours from main, the last time you rebased 
> over main.
> 
> On Tue, Mar 2, 2021 at 10:02 PM Junchao Zhang <[email protected] 
> <mailto:[email protected]>> wrote:
> I am a naive git user, so I use interactive git rebase.  Suppose I am on the 
> branch I want to modify, 
> 
> 1) Use git graph to locate an upstream commit to be used as the base
> $ git graph
> * 0d5433e9 (HEAD -> jczhang/sf-change-api) SF: rename SFCreateEmbeddedSF to 
> SFCreateEmbeddedRootSF
> * e7314fbb SF: add an MPI_Op argument to SFBcast
> * 83df288d Replace MPIU_REPLACE with MPI_REPLACE
> *   b434c516 Merge branch 'barry/2021-02-02/petscsf-communication-specific' 
> into 'main'
> |\
> | * 62152ded (barry/2021-02-02/petscsf-communication-specific) PetscSFView() 
> never called viewer for the specific type (bug), hence many output files were 
> incorrect.
> * |   a4f5d9b4 Merge branch 'jose/upgrade-magma' into 'main'
> 
> 2) Suppose we choose b434c516 as the base. All commits we want to squash are 
> after it.  Do interactive git rebase. It shows a screen for you to edit.  
> Read the help, which is helpful for new users
>   $ git rebase -i b434c516
> pick 83df288d Replace MPIU_REPLACE with MPI_REPLACE
> pick e7314fbb SF: add an MPI_Op argument to SFBcast
> pick 0d5433e9 SF: rename SFCreateEmbeddedSF to SFCreateEmbeddedRootSF
> 
> # Rebase b434c516..0d5433e9 onto b434c516 (3 commands)
> #
> # Commands:
> # p, pick <commit> = use commit
> # r, reword <commit> = use commit, but edit the commit message
> # e, edit <commit> = use commit, but stop for amending
> # s, squash <commit> = use commit, but meld into previous commit
> # f, fixup <commit> = like "squash", but discard this commit's log message
> # x, exec <command> = run command (the rest of the line) using shell
> # b, break = stop here (continue rebase later with 'git rebase --continue')
> # d, drop <commit> = remove commit
> # l, label <label> = label current HEAD with a name
> # t, reset <label> = reset HEAD to a label
> # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
> # .       create a merge commit using the original merge commit's
> # .       message (or the oneline, if no original merge commit was
> # .       specified). Use -c <commit> to reword the commit message.
> #
> # These lines can be re-ordered; they are executed from top to bottom.
> #
> # If you remove a line here THAT COMMIT WILL BE LOST.
> #
> # However, if you remove everything, the rebase will be aborted.
> #
> # Note that empty commits are commented out
> 
> 3) Suppose we want to squash the last two commits to 83df288d, replace their 
> pick with s (or f, see the help for difference), save and exit the screen
> pick 83df288d Replace MPIU_REPLACE with MPI_REPLACE
> s e7314fbb SF: add an MPI_Op argument to SFBcast
> s 0d5433e9 SF: rename SFCreateEmbeddedSF to SFCreateEmbeddedRootSF
> 
> A new screen shows up
> 
> # This is a combination of 3 commits.
> # This is the 1st commit message:
> 
> Replace MPIU_REPLACE with MPI_REPLACE
> 
> Since we believe all MPI implementations support MPI_REPLACE
> 
> # This is the commit message #2:
> 
> SF: add an MPI_Op argument to SFBcast
> 
> # This is the commit message #3:
> 
> SF: rename SFCreateEmbeddedSF to SFCreateEmbeddedRootSF
> 
> # Please enter the commit message for your changes. Lines starting
> # with '#' will be ignored, and an empty message aborts the commit.
> 
> 4) Edit the commit message as you want, save and exit, done!
> 
> --Junchao Zhang
> 
> 
> On Tue, Mar 2, 2021 at 6:19 PM Blaise A Bourdin <[email protected] 
> <mailto:[email protected]>> wrote:
> Hi,
> 
> This is not technically a petsc question. 
> It would be great to have a short section in the PETSc integration workflow 
> document explaining how to squash commits in a MR for git-impaired developers 
> like me.
> 
> Anybody wants to pitch in, or explain me how to do this?
> 
> Regards,
> Blaise
> 
> -- 
> A.K. & Shirley Barton Professor of  Mathematics
> Adjunct Professor of Mechanical Engineering
> Adjunct of the Center for Computation & Technology
> Louisiana State University, Lockett Hall Room 344, Baton Rouge, LA 70803, USA
> Tel. +1 (225) 578 1612, Fax  +1 (225) 578 4276 Web 
> http://www.math.lsu.edu/~bourdin <http://www.math.lsu.edu/~bourdin>
> 

Reply via email to