首页 > 其他分享 >Git合并时一些鲜为人知的坑

Git合并时一些鲜为人知的坑

时间:2023-11-17 17:56:20浏览次数:27  
标签:pull Git merge 合并 鲜为人知 git 本地 fetch

1.  反复解决同一个冲突

最常见的原因:

  多人团队中开启了rebase ,对commit顺序造成破坏,使得merge 其他分支时可能找不到原始commit id的关联信息,就需要重新merge  conflicts.

 

 

2. 明明合并完了,又让从头合并

当然这和用rebase有关的, 关键是已经解决了冲突,为啥还让从头再来一次。问题出在了git pull上。

就像Mark Twain Blaise Pascal笑话里说的那样:我没有时间让它更短些。

最常说的关于git使用的一个经验就是:

不要用git pull,用git fetch和git merge代替它。

git pull 不完全等于 git fetch + git merge

fetch同pull的区别在于:
git fetch:是从远程获取最新版本到本地,不会自动merge.
而git pull是从远程获取最新版本并merge到本地仓库.
从安全角度出发,git fetch比git pull更安全,因为我们可以先比较本地与远程的区别后,选择性的合并。

请看上图, pull不等于fetch+merge这么简单。 pull拉取远程文件直接和本地文件对比,从共同祖先提交开始回放remote的提交,而git merge是本地repo和本地文件的对比合并,这里得用到了repo的索引,这样已经Merge的文件会复用repo中已经解决冲突的信息,这样就不会有从头开始合并了。

git pull的问题是它把过程的细节都隐藏了起来,以至于你不用去了解git中各种类型分支的区别和使用方法。当然,多数时候这是没问题的,但一旦代码有问题,你很难找到出错的地方。看起来git pull的用法会使你吃惊,简单看一下git的使用文档应该就能说服你。

将下载(fetch)和合并(merge)放到一个命令里的另外一个弊端是,你的本地工作目录在未经确认的情况下就会被远程分支更新。当然,除非你关闭所有的安全选项,否则git pull在你本地工作目录还不至于造成不可挽回的损失,但很多时候我们宁愿做的慢一些,也不愿意返工重来。

下面是Git工作流程图。

标签:pull,Git,merge,合并,鲜为人知,git,本地,fetch
From: https://www.cnblogs.com/sunsky303/p/17839387.html

相关文章

  • git 切换公钥
     打开CMD1、ssh-keygen-trsa2、cdC:\Users\user5m/.ssh(输入对应的路径)3、ls(查看目录)4、catid_rsa.pub(查看当前公钥) 5、ssh-keygen-trsa-C'[email protected]'(输入git邮箱)6、复制生成的公钥并打开码云(添加SSH公钥) 完成以上操作即可拉取代码提交......
  • Git命令整理
    gitreset和gitrevert是Git版本控制系统中常用的命令,用于撤销提交或修改历史记录。它们的作用不同,下面对它们进行解析:gitreset:gitreset命令用于将当前分支的HEAD指针移动到指定的提交,并可以选择性地更改工作目录和暂存区的状态。它有不同的模式:gitreset--soft<......
  • MRI roi图像合并
    笔记来源:MRIroi的图像合并dpabi小工具_哔哩哔哩_bilibili1.如果几个图像的维度不一致,需要先进行reslice1)如何看图像的维度以软件MRIcron为例,window→information,如红框所示,如果几幅图像的维度不一致,则需要进行重采样,length[969672]是图像采集了72层,每一层的分辨率是96*9......
  • ERROR: Permission to stevenlong123/test.git denied to smith-bing. fatal: Could n
    第一次练习git提交代码到github时出现的错误。这里就是说github服务器拒接了我们,不支持远程连接。发现是因为我使用的是ssh来提交的,ssh是安全连接需要通信双方各有一对公钥私钥,github服务器不会自动交换公钥,需要手动在github存储库中部署自己电脑的公钥。使用git命令“ls-al~/.s......
  • 线性表A,B顺序存储合并
    7-1线性表A,B顺序存储合并有两张非递增有序的线性表A,B,采用顺序存储结构,两张表合并用c表存,要求C为非递减有序的,然后删除C表中值相同的多余元素。元素类型为整型#include<iostream>#include<cstring>usingnamespacestd;typedefstructf{intdata;f*next;}node,*......
  • Git与Gitee的交互及配置忽略文件
    将本地项目提交到Gitee1、创建一个新的仓库:首先,在Gitee上创建一个新的仓库。2、初始化本地项目为Git仓库:这将在项目目录中创建一个名为".git"的隐藏文件夹,用于存储Git的相关配置和版本信息。gitinit3、将项目文件添加到暂存区:执行以下命令将项目文件添加到Git的暂存区:   ......
  • jq 数组对象,重复数据进行合并
    var bindif = [{        "ifname": "Ge0/2/1",        "ip": "20.1.1.1",        "mask": "255.255.255.0"    }, {        "ifname": "Ge0/2/5",        "ip6addr": &q......
  • git
    1.gitignore文件不起作用的解决方案:gitrm-r--cached.gitadd.gitcommit-m'update.gitignore'2.拉取线上特定的分支(如:克隆dev分支的代码):gitclone-bdevgit-url//在本地创建分支dev并切换到该分支gitcheckout-bdev(本地分支名称)origin/dev(远程分支名称......
  • 2023最新!Git2
    2023最新!Git2.40.0于win10环境下的安装git官网地址:https://git-scm.com/download/win/导航目录2023最新!Git2.40.0于win10环境下的安装导航一、下载Git二、安装Git三、检验一、下载GitGit官网选择自己所需的版本下载二、安装Git双击安装程序,并选择next推荐更换路径(避免文......
  • 数组类算法题——合并非递减数组
    合并非递减数组题目:给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应......