zeromax 发表于 2018-1-15 23:06:00

Git:代码冲突常见解决方法

  摘自: http://blog.csdn.net/iefreer/article/details/7679631
  如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候,
  在发布这个配置文件的时候,会发生代码冲突:
  error: Your local changes to the following files would be overwritten by merge:
  protected/config/main.php
  Please, commit your changes or stash them before you can merge.
  如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:
  git stash
  git pull
  git stash pop
  然后可以使用git diff -w +文件名 来确认代码自动合并的情况.
  反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下:
  git reset --hard
  git pull
  其中git reset是针对版本,如果想针对文件回退本地修改,使用
  git checkout HEAD file/to/restore
  摘自: http://zhidao.baidu.com/link?url=mRIczQrWwKb4tCcHaLwLGzjHcfqTvUAEyB1n-ayPSyVerNC0UAUgrJC7-tVI4iQT-Yr_g7vAMHKnhYXZ3MsGu-xrE5JBB3mjnh1Q2U3nD2O
  处理的方式非常简单,主要是使用git stash命令进行处理,分成以下几个步骤进行处理。
  1、先将本地修改存储起来
  $ git stash
  这样本地的所有修改就都被暂时存储起来 。是用git stash list可以看到保存的信息:
  git stash暂存修改
  其中stash@{0}就是刚才保存的标记。
  2、pull内容
  暂存了本地修改之后,就可以pull了。
  $ git pull
  3、还原暂存的内容
  $ git stash pop stash@{0}
  系统提示如下类似的信息:
  Auto-merging c/environ.c
  CONFLICT (content): Merge conflict in c/environ.c
  意思就是系统自动合并修改的内容,但是其中有冲突,需要解决其中的冲突。
  4、解决文件中冲突的的部分
  打开冲突的文件,会看到类似如下的内容:
  git冲突内容
  其中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed changes之间的内容就是本地修改的内容。碰到这种情况,git也不知道哪行内容是需要的,所以要自行确定需要的内容。
  解决完成之后,就可以正常的提交了。
页: [1]
查看完整版本: Git:代码冲突常见解决方法