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).

  • A new git project from a branch?
  • Converting a subversion repository to git, why am I seeing “fatal: not a valid object name”?
  • How to install hooks in gitolite
  • Git clone stuck — Blocked ports?
  • egit replacing single file - HEAD Revision vs File in git index
  • Working in git with directories with the same name but different case in Windows
  • Could someone clarify the differences of those 2 options? When would I use one instead of the other?

  • How to begin committing via git to bitbucket - Not seeing changes
  • How to modify someone else's Github pull request?
  • Find a Pull Request on Github where a commit was originally created
  • GitHub - Pushed a change to master, but appears as different user than me?
  • is it possible to `git status` only modified files?
  • How to install Modular Boost?
  • 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.