问题描述
我们在用git开发是经常遇到冲突的情况,一般发生在协同开发时,一个文件被两个人同时改掉了,这是我们在pull代码时要解决冲突,并重新add然后commit最后push.
这个博客记录的是另一种发生冲突的情况如何解决问题
起因是在github上fork了别人的库,有一段时间没有fork更新了,算起来差不多1年时间。昨天用android studio添加了别人的库的远程仓库,准备直接fetch别人的库,然后merge到自己fork的库的分支上。之所以不用github提供的更新fork代码的方法,是因为它提示会有冲突需要解决
如果要下载github自己的客户端解决问题,还不如直接用android studio来merge解决冲突 。
点击VCS---->Git----->Remotes--->点击 + 号添加别人的库的github地址,VCS---->Git----->Fetch 更新远程分支,右下角选中对应别人的分支,merge into current 到自己的分支上,
此时会弹出一个提示框提示你冲突需要解决,当你一个个解决完以后,并且也运行成功项目了,但是android studio 的右下角会一直有一个黄色merge感叹号提示,并且这时候你想要commit自己这个分支时,问题来了!
cant checkout because of unmerged files,you have to resolve all merge conflicts before checkout.
由于未合并文件而无法签出,您必须在签出之前解决所有合并冲突。
解决办法
打开git的终端控制台,输入 git status
此时会提示类似下面这样子提示
$ git checkout master
error: Entry 'res/layout/my_item.xml' would be overwritten by merge. Cannot merge.
如果你去android studio 中搜索这个文件,你会找不到这个文件,因为它在merge过程中被删除了,那就很明确了,此时只需要在 终端控制台
中输入 git rm res/layout/my_item.xml 删除对应的找不到的文件。
这之后你再输入 git status 时,会发现刚才的需要删除的文件已经没了,现在是提示了一堆的新增、修改的文件,这个就是之前merge时做的处理,
此时我们只需要再输入 git commit 即可完成提交代码(PS:此处还处于megring的状态,所以不需要添加 -m commit信息)
界面上会出现如下commit信息(merge产生的), :wq 退出,merge成功.
此时再看一下android studio中的项目,你会发现右下角的黄色merge感叹号没了,代码也commit了,颜色从绿色新增、蓝色修改 的状态变为merge成功commit提交成功后的白色了。