To git checkout without overwriting data

How can you git-checkout without overwriting the data?

I run

 git checkout master

I get

error: Entry 'forms/answer.php' would be overwritten by merge. Cannot merge.

This is surprising, since I did not know that Git merges when I git-checkout.
I have always run after the command separately git merge new-feature.
This seems to be apparently unnecessary if Git merges at checkout.

  • Correct merged file in git
  • git blame while resolving merge conflicts
  • How to resolve conflict of renamed folder of file in git?
  • Efficient project architecture with git
  • Git: Subtree Merge into a Deeply Nested Subdirectory?
  • your branch is behind by 2 commits
  • force git mergetool to amend a previously done merge
  • Merge changes from one repo to another with different tree structures
  • 2 Solutions collect form web for “To git checkout without overwriting data”

    Git is warning you that forms/answers.php has changes in your working copy or index that have not been committed.

    You can use git-stash to save your changes then git-stash apply to restore them.

    The common use case of git-stash is that you are working on changes but then must temporarily checkout a different branch to make a bug fix. So you can stash your changes in your index and working copy, checkout the other branch, make the bug fix, commit, checkout the original branch, and git-stash apply to restore your changes and pick-up where you left off.

    Git does a 2-way merge of uncomitted changes when switching branches (using git checkout <branch>), but ordinarily it does only trivial (tree-level) merge.

    Besides git-stash solution by Karl Voigtland, you can give additional options to git checkout, choosing one of the following options:

    • Tell git to try harder to merge uncomitted changes into branch you switch to with -m / --merge option. With this option, a three-way merge between the current branch, your working tree contents, and the new branch is done, and you will be on the new branch.

    • Tell git to overwrite uncomitted changes, throwing away local changes with -f option. Warning: uncomitted changes will be lost!

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