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)
git log reveals all the commits from the v1.0 branch merged into master.
Note the output while doing the merge – it is saying
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.
Answered By – manojlds