为什么不commit(到本地版本库)就不能(从远端服务器)pull?

本文探讨了在使用Git时,为何在本地有未提交修改的情况下不能直接从远程服务器pull的原因。文章通过实验展示了在不同版本间的操作结果,并分析了Git的合并机制,特别是三路合并算法。作者提出,只有在发生快速合并并且本地是最新版本时,才能不提交就pull,否则可能因merge导致工作区文件被覆盖。
摘要由CSDN通过智能技术生成

为什么不commit(到本地版本库)就不能(从远端服务器)pull?

若干基础

1.默认的commit是提交stage(暂存区)中的内容到本地版本库。
2.一般可以认为pull = fetch + merge
(1)fetch是指创建并更新本地远程分支(origin/master),并将FECTH_HEAD指定为刚才的分支。
(2)merge是指将指定的分支1与当前分支合并,合并存在两种情况(git采用三路合并算法是用于解决冲突的一种方式,当产生冲突时,三路合并算法会获取三个节点:本地冲突的B节点,对方分支的C节点,B,C节点的共同最近祖先节点A。三路合并算法会根据这三个节点进行合并。具体过程是,B,C节点和A节点进行比较,如果B,C节点的某个文件和A节点中的相同,那么不产生冲突;如果B或C只有一个和A节点相比发生变化,那么该文件将会采用该变化了的版本;如果B和C和A相比都发生了变化,且变化不相同,那么则需要手动去合并;如果B,C都发生了变化,且变化相同,那么并不产生冲突,会自动采用该变化的版本。最终合并后会产生D节点,D节点有两个父节点,分别为B和C。)

进行试验发生的情况

1.版本1(刚刚clone下来的)在工作区进行了修改1,直接pull,成功
2.版本2在工作区进行了修改2,commit,pull,p

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值