Git merge errors

匿名 (未验证) 提交于 2019-12-03 01:58:03

问题:

I have a git branch called 9-sign-in-out with perfectly working code, and I want to turn it into the master. I'm currently on the master branch.

$ git branch 9-sign-in-out * master 

I'm trying to switch to 9-sign-in-out branch, but it doesn't allow me to:

$ git checkout 9-sign-in-out app/helpers/application_helper.rb: needs merge config/routes.rb: needs merge error: you need to resolve your current index first 

Any idea how can I ignore all the master branch errors and turn the 9-sign-in-out branch into the master? Maybe git rebase? But I don't want to lose the code in 9-sign-in-out branch.

回答1:

It's worth understanding what those error messages mean - needs merge and error: you need to resolve your current index first indicate that a merge failed, and that there are conflicts in those files. If you've decided that whatever merge you were trying to do was a bad idea after all, you can put things back to normal with:

git reset --merge 

However, otherwise you should resolve those merge conflicts, as described in the git manual.


Once you've dealt with that by either technique you should be able to checkout the 9-sign-in-out branch. The problem with just renaming your 9-sign-in-out to master, as suggested in wRAR's answer is that if you've shared your previous master branch with anyone, this will create problems for them, since if the history of the two branches diverged, you'll be publishing rewritten history.

Essentially what you want to do is to merge your topic branch 9-sign-in-out into master but exactly keep the versions of the files in the topic branch. You could do this with the following steps:

# Switch to the topic branch: git checkout 9-sign-in-out  # Create a merge commit, which looks as if it's merging in from master, but is # actually discarding everything from the master branch and keeping everything # from 9-sign-in-out: git merge -s ours master  # Switch back to the master branch: git checkout master  # Merge the topic branch into master - this should now be a fast-forward # that leaves you with master exactly as 9-sign-in-out was: git merge 9-sign-in-out 


回答2:

git checkout -f 9-sign-in-out # change branch, discarding all local modifications git branch -M master # rename the current branch to master, discarding current master 


回答3:

as suggested in git status,

Unmerged paths:                                                                                                                                 (use "git add ..." to mark resolution)                                                                                                       both modified:   a.jl                                       both modified:   b.jl 

I used git add to finish the merging, then git checkout works fine.



回答4:

git commit -m "Merged master fixed conflict."



文章来源: Git merge errors
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!