首页 > 代码库 > git pull——git库版本与本地库版本冲突总结
git pull——git库版本与本地库版本冲突总结
git库版本与本地库版本冲突:个人定义为就是git库版本与本地库版本不匹配,详细地说就是我们从git库clone克隆下来的版本,经过修改后提交并合并成新版本,但是后来又将git库的该版本撤销了,而本地没有撤销该版本,此时就是本地库拥有此版本而git库中没有此版本。这样在使用git pull或git pull origin master可能会出现:“Your local changes to the following files would be overwritten by merge”或"PULL 不可用,因为您尚有未合并的文件“或"自动合并失败,修正冲突后提交修正后的结果"
“Your local changes to the following files would be overwritten by merge”这样的错误,意思就是你的本地修改以下文件将被覆盖合并。
情况一
如果只会提示:“Your local changes to the following files would be overwritten by merge”这样的错误,这样的错误是因为本地库中有修改,但是没有提交到git库中,而现在使用git pull或git pull origin master来更新代码就会提示本地修改的文件会被覆盖合并,虽说会覆盖合并,其实根本就没有合并。以前为了同步git库对应的版本,而使用git checkout -f来撤销自己的修改,这样实在是太愚蠢的做法。原来我们是可以使用git stash暂时搁置当前已做的修改,倒退到改动之前的状态来进行其他的必要操作(比如发布,或者解决一个bug,或者branch,等等)。此时就可以使用git pull或git pull origin master来更新代码,然后使用git stash pop撤销最后的一个搁置(可能有多次搁置,查看搁置使用git stash list)。
情况二
如果通过情况一的解决办法还是不行,如果遇到"PULL 不可用,因为您尚有未合并的文件“或"自动合并失败,修正冲突后提交修正后的结果"。如:
此时就有可能是本地库中拥有git库中没有的版本,到查看git库的版本状态以及本地使用git log查看本地的版本状态,本地查看结果如下:
解决办法就是我们本地也要将"触摸屏跳点问题"这个版本撤销,当然也可以撤销到比它更前的版本。如:
使用git reset --hard 03a280c275bbd48c61417948173cbabf5bc71a69回退到"LCD PWM背光调节"这个版本。其中03a280c275bbd48c61417948173cbabf5bc71a69为对应版本commit后面的字符串
最后使用git pull origin master成功更新了代码。
git branch:查看分支
git checkout master 切换到分支‘master’
git pull——git库版本与本地库版本冲突总结