在git的使用过程中难免会碰到一些冲突,那么该怎么解决呢?
冲突会出现在什么地方呢?git pull 的时候,提示有冲突文件
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 stash有什么作用呢?
git stash 可以将本地的改动存储到栈中,使本地的版本和git远端的相同,不影响git pull的操作,然后使用git stash pop将栈中的文件和pull下来的进行合并,之后再进行将冲突的文件进行修改就ok了。
当你多次使用’git stash’命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,
git stash list
命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用’git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用’git stash clear’来将栈清空。
git stash # save uncommitted changes
# pull, edit, etc.
git stash list # list stashed changes in this git
git show stash@{0} # see the last stash
git stash pop # apply last stash and remove it from the list
git stash --help # for more info
git stash pop
与 git stash apply <stash@{id}>
的区别。
git stash pop stash@{id}
命令会在执行后将对应的stash id 从stash list里删除,
git stash apply stash@{id}
命令则会继续保存stash id。
不同的时候用途可能会不一样,所以都需要学习一下
删除stash。
git stash drop <stash@{id}>
如果不加stash编号,默认的就是删除最新的,也就是编号为0的那个,加编号就是删除指定编号的stash。
git stash clear 是清除所有stash