git pull报错:Auto Merge Failed; Fix Conflicts and Then Commit the Result.

1.出错场景:

协同开发时,我们从远程服务器上pull下代码的时候,出现以下提示信息:
Auto Merge Failed; Fix Conflicts and Then Commit the Result.

2.原因分析:
利用git status,输出如下:
root@hyk-virt:/etc# git status# On branch master# Your branch and 'origin/master' have diverged,# and have 2 and 2 different commits each, respectively.## Unmerged paths:# (use "git add/rm <file>..." as appropriate to mark resolution)## both modified: apt/sources.list## Changes not staged for commit:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)## modified: cups/subscriptions.conf# modified: cups/subscriptions.conf.O# modified: mtab# modified: update-manager/release-upgrades#no changes added to commit (use "git add" and/or "git commit -a")
从git status的结果可以发现:其中sources.list这个文件存在合并冲突
而进一步分析git pull的原理,实际上git pull是分了两步走的,(1)从远程pull下origin/master分支(2)将远程的origin/master分支与本地master分支进行合并
以上的错误,是出在了第二步骤

3.解决方法

方法一:如果我们确定远程的分支正好是我们需要的,而本地的分支上的修改比较陈旧或者不正确,那么可以直接丢弃本地分支内容,运行如下命令(看需要决定是否需要运行git fetch取得远程分支):
$:git reset --hard origin/master
或者$:git reset --hard ORIG_HEAD
解释:
git-reset - Reset current HEAD to the specified state
--hard Resets the index and working tree. Any changes to tracked files in the working tree since <commit> are discarded.
方法二:我们不能丢弃本地修改,因为其中的某些内容的确是我们需要的,此时需要对unmerged的文件进行手动修改,删掉其中冲突的部分,然后运行如下命令
$:git add filename
$:git commit -m "message"

方法三:如果我们觉得合并以后的文件内容比价混乱,想要废弃这次合并,回到合并之前的状态,那么可以运行如下命令:
$:git reset --hard HEAD

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,738评论 9 163
  • 如果repository触发了事物机制,默认的配置包括: 特定的数据库的事务隔离级别; 没有timeout配置; ...
    码头军阅读 232评论 0 0
  • 托学姐的福,看了《28 岁未成年》点映场,一位少女导演拍了一部讲述少女心的故事。 28 岁知性温柔、百依百顺的凉夏...
    口十君阅读 383评论 0 0
  • 把人生活明白无非有三:遇见的人、读过的书、走过的路。 遇见的每一个人都是一种缘份,但并非每一个人都...
    徐洪均阅读 326评论 0 2