On Wed, 3 Mar 2021, Mark Adams wrote: > On Tue, Mar 2, 2021 at 11:02 PM Barry Smith <bsm...@petsc.dev> wrote: > > > > > > > On Mar 2, 2021, at 9:24 PM, Mark Adams <mfad...@lbl.gov> 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. > > > > Humm, I'm not sure. The important thing is that you will hit main commits > and you don't want to touch those or the first of your commits.
Best to think of 'squash (rebase -i (squash))' as different from 'rebase over branch' Sure you can club both operations - assuming that's the intention. In some cases its preferable to only do the squash - and not rebase (over main). For ex: when you successfully run a test pipeline - best to do 'squash-only' (after testing) to keep the test results current. Satish > > > > > > 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 <junchao.zh...@gmail.com> > > 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 <bour...@lsu.edu> 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 > >>> > >>> > > >