Can Git merge –squash preserve commit comments?

Is there a way of automatically adding all the commit comments from the squashed mybranch commits when doing a

git merge --squash mybranch

so that the single commit contains a concatenation of all the commit comments from mybranch

  • Diff between two commits with two different parent commits
  • Mercurial copy patch to repository
  • Tput color definitions for windows git shell
  • git save snapshots with branches
  • How to find which files have not changed since commit?
  • Creating Maven assembly with files from different Git branches
  • Why does git not recognize “origin/master” as a valid object name?
  • accidentally rolled back to a previous commit in git
  • git: How to move last N commits made to master, into own branch?
  • Split a git branch into two branches?
  • Problems with installation of Android Studio on Windows 10
  • What does “warning: unable to unlink website: Operation not permitted” mean when checking out a Git branch?
  • One Solution collect form web for “Can Git merge –squash preserve commit comments?”

    I think that’s what “git merge –squash” does automatically! Just do the commit with “git commit –no-edit” and I think that’s what you’ll get. I see all the commit messages inside .git/SQUASH_MSG immediately after I run the “git merge –squash” command. Do you?

    Personally, I squash into master, but then force-push the result back to my topic branch. This way my final commit can be code-reviewed via pull-request.

    Live example (try these exact commands, this uses my demo server, and really works):

    git clone http://vm.bit-booster.com/bitbucket/scm/bb/rebase-example-2.git
    cd rebase-example-2
    git checkout branch
    git reset --hard origin/master
    git merge --squash origin/branch
    git commit --no-edit
    
    git show
    commit 74656c51212526af49382c985419244737141217
    Author: G. Sylvie Davies <sylvie@bit-booster.com>
    Date:   Mon Dec 26 22:07:50 2016 -0800
    
        Squashed commit of the following:
    
        commit 3120cbba4e94e0a81eed2f9ff42e7012cca996bf
        Author: G. Sylvie Davies <sylvie@bit-booster.com>
        Date:   Thu Dec 15 18:24:02 2016 -0800
    
            b2
    
        commit ccb522334464879b8f39824031c997b57303475d
        Merge: 6b85efb 026bf0c
        Author: G. Sylvie Davies <sylvie@bit-booster.com>
        Date:   Thu Dec 15 18:13:35 2016 -0800
    
            m
    
        commit 6b85efbddbb74d49a096bfc54fd4df15e261b72f
        Author: G. Sylvie Davies <sylvie@bit-booster.com>
        Date:   Thu Dec 15 18:12:51 2016 -0800
    
            b1
    

    At this point I recommend doing a “git push –force-with-lease” to get this squashed commit up to your remote topic branch ready for code-review.

    Note: I do one fancy thing in the example. I’m actually squashing into origin/master, not local master, and I first do “git checkout branch” and “git reset –hard origin/master”. This keeps my local master unperturbed by this operation, so that whatever I might be working on there is left alone.

    I’m on Git 2.7.4. Maybe older gits behave differently, I don’t know.

    If you want to do this all in Web UI, and you happen to be using Atlassian Bitbucket Server (the on-premises version), you can install my Bit-Booster paid add-on, and hit the big “Squash” button it puts on pull-requests. It does the exact same thing, except that only non-merge commit messages are concatenated.

    enter image description here

    Git Baby is a git and github fan, let's start git clone.