git pull时的冲突解决方式; git stash; git fetch

时间:2022-08-27 20:43:15

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动作。)

git pull时的冲突解决方式;  git stash;  git fetch

即,你可以

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

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

git pull时的冲突解决方式;  git stash;  git fetch

     然后,按照提示执行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时的冲突解决方式;  git stash;  git fetch

然后更新远程仓库的代码就不会出现冲突了: 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. sqlserver附加 mdf、ldf的方法(手记)

    exec sp_attach_db 'bookstore','E:\homework\bookstore_Data.MDF','E:\homework\bookstore_Log.LDF' EXEC ...

  2. How to configure a static IP address on CentOS 7(CentOS7静态IP地址设置)

    Question: On CentOS 7, I want to switch from DHCP to static IP address configuration with one of my ...

  3. 关于WinForm引用WPF窗体---在Winform窗体中使用WPF控件

    项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...

  4. cocos2d-html5版日历组件

    根据一as3版本给改编成成了js版的.as3版本的地址:  http://download.csdn.net/detail/fengye513/2722289 胜利项目做的差不多了,由于项目用的是c+ ...

  5. unbuntu下安装flash插件

    adobe flash player的官方下载页面为:https://get.adobe.com/cn/flashplayer/ 不过近期通过APT方式以及ubuntu的软件中心都安装不了flashp ...

  6. 使用 DB Fixtures 为 Unit Test 提供基础数据,Sails + Mocha 实现。

    使用 DB Fixtures 为 Unit Test 提供基础数据,Sails + Mocha 实现. 问题:Test Fixture 太分散,管理麻烦. 在做单元测试的时候,数据回滚是个比较麻烦的问 ...

  7. 学习web前端前感

    我与IT 不知不觉二十个春夏秋冬过去了,我也从一个小孩变成了大人......然而并没什么卵用!这二十年来一直贴着“菜鸟”这样的标签,自小爱朝抵抗力小的方向走,这陋习至今还蔓延着,让人看来像是怒其不争的 ...

  8. HTTPS 中双向认证SSL 协议的具体过程

    HTTPS 中双向认证SSL 协议的具体过程: 这里总结为详细的步骤: ① 浏览器发送一个连接请求给安全服务器.② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器.③ 客户浏览器检查服务器送 ...

  9. 【高德地图API】从头德国高中生JS API(三)覆盖物——大喊|折线|多边形|信息表|聚合marker|点蚀图|照片覆盖

    覆盖物,是一张地图的灵魂.有覆盖物的地图.才是完整的地图.在一张地图上,除了底层的底图(瓦片图,矢量图),控件(有功能可操作的工具).最重要最必不可少的就是覆盖物了.覆盖物有多种.包含.标注.折线.多 ...

  10. HttpClient请求详解

    HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建 ...