1.冲突情形一
Git命令在提交代码前,没有使用git pull命令拉取最新的代码,因此再次提交出现的冲突:
解决方法有如下两种:
- 保留你本地的修改
git merge --about
git reset --merge
合并后记得一定要提交这个本地的合并(add—>commit—>push—>pull)
然后执行git pull获取线上仓库。
2. dowm下线上代码版本,抛弃本地的修改
不建议这样做,但是如果你本地修改不大或者有一份备份留存,可以直接用线上最新版本覆盖到本地。
git fetch --all
git reset –hard origin/master
git fetch
2. 冲突情形二
从git远程仓库中pull最新的代码,出现如下错误:Please commit your changes or stash them before you merge.
解决方法如下:
- git stash //暂存代码
- git pull 分支名 //从远程仓库拉取最新代码
- git stash pop //合并代码到本地仓库,此时代码是将暂存的代码和远程仓库的代码合并
- 这时候需要手动修改合并所需的代码即可
- git stash clear //清空git栈
git stash可以用来暂存当前正在进行的工作,比如想pull最新代码,又不想加新commit,或者另外一种情形,为了fix一个紧急的bug,先stash,使返回到自己上一个commit,改完bug之后再stash pop以继续原来的工作。
以下是stash常用命令:
命令 | 功能 |
git stash | 备份当前工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前工作区内容保存到Git栈中 |
git stash pop | 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容 |
git stash list | 显示Git栈内的所有备份 |
git stash clear | 清空Git栈 |
3. 冲突情形三
本地回退历史版本,当提交代码发生冲突或想会退到某一个版本,操作如下:
- git log(获取提交的历史日志)
- 执行命令:git reset --hard 版本号(就是git log中的commit 后面的哈希值,上图中的黄色部分commit后面的值)
- 想要修改远程上的代码还要执行如下命令:
git push –u 代码所在的分支 –f//强制提交,此时远程上的代码已被覆盖(不建议使用)