Differences between Git merge –squash and –no-commit

As the title says, I am not really clear about the differences between a git merge --squash and a git merge --no-commit.

As far as I understand the help page for git merge, both commands would leave me in an updated working-tree, where it is still possible to edit and then to do a final commit (or multiple commits).

  • Git: Can I put all contents in a sub folder and still have history
  • Cycle through several branches with submodules for read only purpose
  • git commit trigger to block byte order mark
  • Differences between “git pull” commands when pulling from origin?
  • Can I use Git's ignore processing outside of Git?
  • Get the latest commit in a repository with JGit
  • Could someone clarify the differences of those 2 options? When would I use one instead of the other?

  • git find fat commit
  • Why is git stalling?
  • Git: Stash just a single file
  • Heroku won't accept push due to submodule
  • gitignore file pattern not working
  • “Internal error” when pushing to Heroku
  • One Solution collect form web for “Differences between Git merge –squash and –no-commit”

    git merge --no-commit
    

    This is just like a normal merge but doesn’t create a merge-commit. This commit will be a merge commit: when you look at the history, your commit will appear as a normal merge.

    git merge --squash
    

    This will merge the changes into your working tree without creating a merge commit. When you commit the merged changes, it will look like a new “normal” commit on your branch: without a merge commit in the history. It’s almost like you did a cherry-pick on all the merged changes.

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