一、解决冲突
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精品交流群
-
- 微信公众号
-
2018年11月20日 下午7:27 沙发
总结的不错