Reputation: 103647
A file couldn't be merged. How do I merge it with Git?
Upvotes: 1
Views: 4219
Reputation: 1328202
The error message would be (Git Faq):
fatal: Entry 'frotz' not uptodate. Cannot merge.
It means that you have local modifications to '
frotz
', which would be lost on checkout. You can give '-m
' option togit checkout
, which would try three-way merge.Sometimes the solution is to commit.
also illustrated in git checkout
.
-m
--merge
When switching branches, if you have local modifications to one or more files that are different between the current branch and the branch to which you are switching, the command refuses to switch branches in order to preserve your modifications in context
So the merge process would be:
git checkout -m mytopic
Auto-merging frotz
After this three-way merge, the local modifications are not registered in your index file, so
git diff
would show you what changes you made since the tip of the new branch.When a merge conflict happens during switching branches with the
-m
option, you would see something like this:
$ git checkout -m mytopic
Auto-merging frotz
ERROR: Merge conflict in frotz
fatal: merge program failed
At this point,
git diff
shows the changes cleanly merged as in the previous example, as well as the changes in the conflicted files.
Edit and resolve the conflict and mark it resolved withgit add
as usual:
$ edit frotz
$ git add frotz
Upvotes: 2
Reputation: 81290
To merge files in git:
CONFLICT
when merging file x
and that you should fix this conflict before continuing with the merge.<<<
).git add filewithconfict
git commit -m "Merged master branch"
Here's an example merge session:
Last login: Mon Nov 30 17:51:55 on ttys002
KidA% cd Desktop
KidA% mkdir merge.git
KidA% cd merge.git
KidA% git init
Initialized empty Git repository in /Users/jkp/Desktop/merge.git/.git/
KidA% echo "foo" > test.file
KidA% git add *
KidA% git commit -m "Initial commit"
[master (root-commit) 55f61fc] Initial commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 test.file
KidA% git branch
* master
KidA% git checkout -b topic
Switched to a new branch 'topic'
KidA% echo "bar" > test.file
KidA% git commit -a -m "Topic commit"
[topic 6c524f3] Topic commit
1 files changed, 1 insertions(+), 1 deletions(-)
KidA% git checkout master
Switched to branch 'master'
KidA% echo "foobar" > test.file
KidA% git commit -a -m "Conflicting commit"
[master a660160] Conflicting commit
1 files changed, 1 insertions(+), 1 deletions(-)
KidA% git checkout topic
Switched to branch 'topic'
KidA% git merge master
Auto-merging test.file
CONFLICT (content): Merge conflict in test.file
Automatic merge failed; fix conflicts and then commit the result.
KidA% vim test.file
test.file before resolve:
<<<<<<< HEAD
bar
=======
foobar
>>>>>>> master
test.file after resolve:
foobar
KidA% git add test.file
KidA% git commit -m "Merged master branch"
[topic 44c0cb6] Merged master branch
Upvotes: 1