git fetch指令:

https://www.yiibai.com/git/git_pull.html


发现远端有更新,git pull时,如果你本地分支修改了东西,导致git pull有冲突,失败。这时可以有两种方式解决问题。

关于git pull的实验:

本地有分支branch1,对应远端的分支branch1, 两端状态相同。

当前工作区处于branch1,我更改一个文件file并保存,然后执行git pull,得到提示”Already up to date“; 然后,我执行git add file,然后,执行git pull,得到相同的提示;

然后,执行git commit -m“xx” 将我的修改进行commit,然后执行git pull,也得到同样的提示!

--- 也就是说, git pull完全没有起作用! ---原因: 远端没有更新,git pull不起作用!

本地有分支branch1,对应远端的分支branch1, 两端状态相同。然后,远端被人更新::

1)你当前工作区处于branch1,并修改file文件保存,不执行add, commit。

然后执行git pull,会提示冲突:
error: Your local changes to the following files would be overwritten by merge:
        file1.txt
Please commit your changes or stash them before you merge.
Aborting

git pull命令虽然相当于git fetch 加 git merge,但是此时远端的最新代码并没有被fetch到你的本地仓库,即你的本地仓库和工作区都没有被更新。

2)你当前工作区处于branch1,并修改file文件保存,执行git add file,不执行commit。

然后执行git pull,会提示同上的冲突。

3)你当前工作区处于branch1,并修改file文件保存,执行git add file,执行git commit -m"comments"。然后执行git pull,提示:

CONFLICT (content): Merge conflict in file1.txt
Automatic merge failed; fix conflicts and then commit the result.
这时,你的命令行处于merging状态,同时,你的本地文件别git 修改,帮你标记出冲突的地方了。这时执行git status会提示:(即,修改了工作区的文件,并add ,commit之后,执行git pull时,才会执行merge动作。)

即,你可以

  a)   执行git  merge --abort取消这次git  pull操作,执行后你本地文件不变,本地仓库的这个分支也不变;;

  b)  或者,手动修改git 标记的冲突内容文件并保存,执行git add file以mark resolution, 然后,执行git status 发现:

     然后,按照提示执行git commit 将你的merge后的文件commit到本地仓库就完成这次merge 啦。 这样有一个缺点,即合并冲突解决后,你再执行git status会发现你本地比远端多两个commit,这时因为你执行git pull之前已经做过git       commit,这里为了解决冲突又做了一次,导致了你的本地内容虽然与远端一致但是commit记录不同步,,因此,还是不要直接在本地分支(该分支对应远端)上修改内容,而是先新建一个本地分支并在其上进行功能开发,开发完毕后进行       merge.  (commit记录不同步好像影响不大,下文中的git stash就是先解决了冲突再commit)

  c)  或者,执行git merge tool(please ref to: )


git pull提示冲突的情况对应上文中的1) 和 2)情况,即你没有git commit你本地的修改。可以又两种方法搞定:

1)放弃本地修改

     让 本地仓库 代码覆盖  本地工作区 修改,然后更新远程仓库代码;

     本地仓库 代码完全覆盖本地  工作区间,具体指令如下:

git checkout head . (注意: 别遗漏 "head" 后的 " ." )(执行后,你本地的缓存区域的内容也被抛弃了,如果你执行过git add的话)

有人画了下图:

然后更新远程仓库的代码就不会出现冲突了: git pull

2)用git stash

将本地修改的代码放在缓存区, 然后从远程仓库拉取最新代码,拉取成功后再从缓存区将修改的代码取出, 这样最新代码跟本地修改的代码就会混杂在一起, 手工解决冲突后, 提交解决冲突后的代码。

执行git pull提示冲突之后,执行

git stash,

然后,git pull就可以没有冲突了;

然后,git stash pop,将刚才缓存的内容merger到当前新拉下来的, 手动解决冲突,然后git add, git commit, git push.

git pull时的冲突解决方式; git stash; git fetch的更多相关文章

  1. (转)使用git stash解决git pull时的冲突

    在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息: error: Your local changes to 'c/environ.c' would be overwritten b ...

  2. git merge git pull时候遇到冲突解决办法git stash

    在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息: error: Your local changes to 'c/environ.c' would be overwritten b ...

  3. git pull 显示的冲突---解决办法git stash

    git pull:显示本地仓库与远程仓库有冲突 Please, commit your changes or stash them before you can merge. Aborting 解决办 ...

  4. Oracle存储过程update受外键约束的主键值时完整性冲突解决方式

    1.问题背景 尽管在数据库操作中我们并不提倡改动主键,可是确实在实际生活中有这种业务需求: 表A有主键KA,表B中声明了一个references A(KA)的外键约束.我们须要改动A中某条目KA的值而 ...

  5. 解决git pull时出现的几个问题

    第1个问题: 解决GIT代码仓库不同步 今天在执行git pull时出现: 解决方法:执行git checkout -f,然后再执行git pull重新checkout 再执行git pull时就可以 ...

  6. Git应用--04遇到冲突解决办法git stash(转载)

    git merge git pull时候遇到冲突解决办法git stash https://www.cnblogs.com/juandx/p/5362723.html 在使用git pull代码时,经 ...

  7. git pull时解决分支分叉(branch diverged)问题

    git pull时出现分支冲突(branch diverged) $ git status # On branch feature/worker-interface # Your branch and ...

  8. ---解决git pull 后出现冲突的解决方法

    0. git statusOn branch masterYour branch and 'origin/master' have diverged,and have 1 and 3 differen ...

  9. 关于git的文件内容冲突解决

    虽然以前我很怕git冲突,包括以前的版本控制器SVN上的冲突,但是昨天我决定好好的面对它,不去怕它,下面是我的解决过程... 话说一天的早上,我和同事(称为A)都同步了网络上的代码,然而A在中途提交了 ...

随机推荐

  1. iOS系统的两个循环

    1.事件循环: 2.显示循环:displaylink:系统定时从gpu缓存获取图片信息显示在屏幕.

  2. Maven下创建SSM项目的所有依赖和插件

    记录下来,方便以后使用 tomcat:7 Maven:3.6.1 IDEA:2018.3 <properties> <spring.version>5.1.5.RELEASE& ...

  3. 线程太多导致socket连接池爆满,进程启动不了

    Issue: 某部机上跟其它机器的连接有问题,ping可以通,telnet端口不通,可以其它机器可以连接到该机器上的进程. java应用启动不起来,产生以下错误. java.net.SocketExc ...

  4. 全部文章> Maven

    Maven     原 Maven中<resources>标签详解 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;& ...

  5. BDD的概念

    BDD的概念Behavior-Driven Development (BDD) is a set of software engineering practices designed to help ...

  6. leetcode:7. 整数反转

    题目描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例: 输入: 123 输出: 321 输入: -123 输出: -321 输入: 120 输出: 21 注意:假 ...

  7. uniapp - 更改项目生成模板、页面

    每次生成项目目录都需要删除一些再添加太麻烦了,就想着能不能修改一下模板 - 当然自定义模板也能实现 好了,被我找到了. 修改以后源文件名称和格式覆盖回去即可,重新启动hbuilderx 这里可以修改e ...

  8. 制作镜像文件工具packer

    openstack镜像制作要在openstack上创建虚拟机,必然要使用到虚拟机镜像. 对于普通用户,可以使用已经创建好的虚拟机镜像.一般是操作系统官方构建并提供的. 某些用户可以有自己独特的需求,需 ...

  9. 数码视讯Q7的刷机

    Q7的硬件配置 CPU: S905LRAM: MIRA P3P4GF4DMF DDR3 512MB * 2 = 1GBROM: 镁光29F64G08CBABB * 1 = 8GBWIFI: RTL81 ...

  10. servlet是什么?servlet到底是啥?

    #说实话 这个鬼servlet我听说过它好多年了,但是我真的不知道它到底是干啥用的.内心里总觉得这是个很复杂的,绝对是让人难以理解的东西,我真的感觉自己很抗拒它,不想知道,不想去了解.可是我还是不得不 ...