如题 :
Android studio 远程Pull 时, 抛
2020/5/29
9:25 ADB rejected shell command (mkdir -p /data/local/tmp/perfd): closed
9:31 Git Pull Failed
Your local changes would be overwritten by merge.
Commit, stash or revert them to proceed. View them
Push 抛
9:36 Push rejected
Push to origin/develop was rejected
遇到冲突的一般在git pull这一步,提醒你有冲突。
在代码合并之后需要注意的是:
并不是直接git push,而是先git commit -am"日志然后再git push,
不然会提示git push失败,还可能遇到其他各种奇葩问题
所以完整顺序是:
git add .
git commit -am"日志"
git pull
代码冲突
代码合并
git commit -am"日志"
git push
解决方法:
①如果你想保留刚自己写的没有提交push的本地修改的代码,并把git服务器上的代码pull到本地(本地刚才修改的代码将会被暂时封存起来):
git stash
git pull origin master
git stash pop
②如果你想完全地覆盖本地的代码,只保留服务器端代码,则直接回退到上一个版本,再进行pull:
git reset --hard
git pull origin master (其中origin master表示git的主分支)
(3) 硬覆盖:放弃本地修改,直接用git上的代码覆盖本地代码:此方法慎用
git reset --hard
git pull
Android Studio自带了解决冲突的工具,以下是操作步骤
选中项目->右键->Git->Resolve Conflicts
会出现一个弹窗,显示了冲突的文件,选择某个文件后,点击Merge
会出现三个代码框
a、左边的Local Changes代表”当前“分支上的修改;
b、右边的Changes from Server代表“合并进来”的分支上的修改;
c、中间的Result代表经过处理后的最终内容;
左上角有一排按钮,分别介绍一下作用
这三个从左往右依次代表:比较左边和中间的内容,比较中间和右边的内容,比较左边和右边内容;
这三个从左往右依次代表:接受两边没有冲突的改变,接受左边没有冲突的改变,接受右边没有冲突的改变,什么叫没有冲突的改变待会儿会解释;
执行git merge ,如果有冲突,就会出现如下格式:
<<<<<<< HEAD
这个位置的内容就是当前所在分支的内容
=======
这个位置的内容就是合并进来的分支的内容
>>>>>>> branchName
用下面的设置来改进冲突标记使其也显示(分支)共同祖先(感谢罗宾·斯托克和休·吉登斯): git config --global merge.conflictstyle diff3
设置显示共同祖先之前:
设置了显示共同祖先之后:
||||||| merged common ancestors下面的内容就是双方改动前的内容.
此部分内容来源: http://blog.csdn.net/jaden_hool/article/details/51852196