Git merge without auto commit

Question

Is it possible to do a git merge, but without a commit?

"man git merge" says this:

With --no-commit perform the merge but pretend the merge failed and do not autocommit,
to give the user a chance to inspect and further tweak the merge result before
committing.

But when I try to use git merge with the --no-commit it still auto-commits. Here's what I did:

$> ~/git/testrepo$ git checkout master
Switched to branch 'master'

$> ~/git/testrepo$ git branch

  • master v1.0

$> ~/git/testrepo$ git merge –no-commit v1.0 Updating c0c9fd2..18fa02c Fast-forward file1 | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)

$> ~/git/testrepo$ git status

On branch master

Your branch is ahead of ‘origin/master’ by 1 commit.

nothing to commit (working directory clean)

A subsequent git log reveals all the commits from the v1.0 branch merged into master.

Answer

Note the output while doing the merge - it is saying Fast Forward.

In such situations, you want to do:

git merge <name-of-branch> --no-commit --no-ff

Important: If you do it this way, then you are not able to do any changes to the files in the staging area e.g. you can't remove/add files or make any changes to the files.

If you want to merge the changes and then commit as if you had manually typed all of the changes you merged in (as opposed to a traditional merge) you need to run rm .git/MERGE_HEAD afterward, which will force git to forget that the merge happened.

Run git pull over all subdirectories [duplicate]

git pull while not in a git directory