git解决冲突常见解决方法

2018年9月9日11:28:53 1 5,283 views
摘要

本文主要面向初学者,没有接触过版本控制概念的读者也可以轻松处理Git 代码冲突常见解决方法

广告也精彩

git解决冲突常见解决方法

一、解决冲突

1)冲突原因
系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候,在发布这个配置文件的时候,会发生代码冲突,报错如下:

error: Your local changes to the following files would be overwritten by
merge: dgstack/config/config.php
Please, commit your changes or stash them before you can merge.

2) 处理方法:
情况一 、如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:

git stash            #把服务器上的修改放入抽屉
git pull             #拉去最新内容,与git同步
git stash pop        #将抽屉内容回复
git stash list       #将抽屉内的所有内容展示
git stash config@{1} #如果列表有多个版本,想恢复其中的一个,就加入它的ID
git stash clear      #将抽屉内容清

然后可以使用git diff -w +文件名 来确认代码自动合并的情况.

情况二、反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下:

git reset --hard      #将git恢复到指定版本HEAD
git pull              #拉去最新代码

其中git reset是针对版本,如果想针对文件回退本地修改,使用

git checkout HEAD file/to/restore

二、git忽略指定文件

git update-index --assume-unchanged PATH_TO_FILE_HERE  #忽略已追踪文件的变动
.gitignore  #忽略本地文件进行更,有时会失效,可能是缓存的问题。
chattr   #锁定本地文件,禁止更新
git rm  #删除暂存区或分支上的文件, 同时工作区也不需要这个文件了
git rm --cached   #删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制

三、撤销修改

git add 后撤销:

撤销所有add文件 git reset HEAD .
撤销单个add文件 git reset HEAD -filename

git commit 后撤销:

只回退commit的信息,保留修改代码:git reset --soft head
彻底回退到上次commit版本,不保留修改代码:git reset --hard head^
说明:
HEAD :当前版本
HEAD^ :上一个版本
--hard 参数会抛弃当前工作区的修改
--soft 参数的话会回退到之前的版本,但是保留当前工作区的修改,可以重新提交

撤销所有本地改动代码:

git checkout .

将代码回退到指定版本

git reset --hard head号

git push 撤销

回滚此次push到服务器的代码:
git log查看commit的信息
git revert 以前commit的id
git push 此时本地回滚的代码到服务器就可以了

git merge 撤销:

$ git checkout 【行merge操作时所在的分支】
$ git reset --hard 【merge前的版本号】
  • QQ精品交流群
  • weinxin
  • 微信公众号
  • weinxin
广告也精彩
admin

发表评论取消回复

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar 口红 0

      总结的不错