Git 合并分支冲突

从一个分支A切换到另一个分支B后,对切换后的B分支进行pull操作,因为pull操作实际上包含了fetch+merge操作,在执行merge操作时,由于很长时间没有对B分支执行过pull/merge操作,本地的B分支库与remote中的B分支库中的差异很大(且这些差异是其他同事开发的文件),merge时产生冲突,使得B分支的状态为merging,其实是指merge失败,还停留在merge状态,也不能执行pull操作。这时没有解决冲突,而是从B分支上执行checkout/switchto操作,试图再切换其他分支时,报:

…….java : needs merge  
…….java : needs merge  
…….java : needs merge  
error : you need to resolve your current index first

大体意思是:merge失败,有conflicts没解决

你可以:

1、解决conflicts后再次执行merge;


(1)手动解决


(2)merge冲突时二选一


以我们本地的修改为准:git checkout --ours xxx/A.java  # 抛弃线上的版本,保留本地的

以线上的修改为准: git checkout --theirs xxx/A.java  # 抛弃本地的版本,保留线上的


这两个参数只适用于 Git 1.6.1及更新的版本。


在1.6.1 以前版本中,虽然没有这两个参数,但也有办法:


1、实现 --theirs


$ git reset -- xxx/A.java


$ git checkout MERGE_HEAD -- xxx/A.java


2、实现 --ours

$ git reset -- xxx/A.java


$ git checkout ORIG_HEAD -- xxx/A.java


2、回退到merge前


git reset --merge  


by 雪洁 2016-03-09 03:04:18 1982 views
我来说几句

相关文章