git merge、git pull和git fetch

在这里插入图片描述

git merge 合并分支,将目标分支合并到当前分支

git fetch  更新远端分支,但不会merge到本地

git pull   更新远端分支并merge到本地

git pull = git fecth + git merge

merge的意思为“合并”,git merge命令是用于将分支合并在一起的操作,就是将目标分支合并到当前分支。

git fetch

git fetch用于更新分支,在一段内其他开发者新建了其他分支,使用该命令将分支信息重新拉取到本地。如下

在gitee上创建了一个xiaoxu的分支
在这里插入图片描述

但是查看远程分支还是只有master分支,这是由于该次分支查询是上一次的缓存,而最新的分支信息未更新。
在这里插入图片描述

使用git fetch命令更新分支,如下更新了最新的分支信息

在这里插入图片描述

将某个远程仓库分支的更新,全部取回本地,不会对代码改动。对本地的开发代码没有任何影响:

git fetch <远程主机名>

也可以更新指定的分支,如下:

git fetch <远程主机名> <分支名>

在本地新建一个xiaoxu分支,并将远程origin仓库的master分支代码下载到本地xiaoxu分支:

# git fetch也可以下载远程分支到本地分支
# 在本地新建一个xiaoxu分支,并将远程origin仓库的master分支代码下载到本地xiaoxu分支

git fetch origin master:xiaoxu

git fetch只用于更新分支信息不会更改代码,对本地分支上的代码没有任何影响。

git merge

在Git中,合并是一个连接分叉历史的过程。它将两个或多个开发历史连接在一起。git merge命令可以帮助你把git分支创建的数据整合到一个分支中。

git merge命令用来合并分支,命令的语法如下:

git merge <query>

该命令会将指定的内容融合到当前分支上。命令的参数可以是提交的内容的id,也可以是某个分支的名称,当是id时,就见提交的内容融合到当前分支,当是分支名称时就是将指定的分支合并到当前活跃的分支上。

在这里插入图片描述

git的设计模式merge冲突

git是协同的意味者任何成员都可以创建自己的分支并提交代码。如果将要合并的两个分支都修改了同一个文件的同一个部分内容,Git就无法确定应该使用哪个版本的内容,需要人为介入调整才能继续进行合并。这样的设计原理更有利于维代码安全。

在提交代码时如何避免和解决冲突?

  1. git status命令查看当前分支的状态,确保HEAD指正指向的是正确的接收合并的分支。如果不是,执行git checkout命令切换到正确的分支。
  2. 确保合并操作涉及的两个分支都更新到远程仓库的最新状态。执行git fetch拉取远程仓库的最新提交。
  3. 在编写代码是执行git merge命令,将代码融合到主分支上,确保提交内容都是最新内容。(2,3可以直接用git pull代替)

即使是如上的步骤在协同开发中仍然会遇到冲突,需人为干预解决冲突。

在这里插入图片描述

在本地模拟冲突,创建基于主分支创建新分支,在两个分支分别对同一内容修改,主分支提交到远程仓库,在本地切换分支在git push就会遇到冲突。

  1. 执行git status命令查看是否存在冲突

如果出现类似如下输出,则说明当前文件存在冲突

On branch master

You have unmerged paths.

  (fix conflicts and run "git commit")
  • 查看冲突内容,当Git在合并过程中碰到了冲突,它会编辑受影响的文件中的相关内容,并添加视觉标记用以展示冲突中双方在此部分的不同内容。
    git diff --name-only --diff-filter=U

其中--name-only参数表示只显示文件名,--diff-filter=U 参数表示显示冲突文件。

<<<<<<< HEAD

这里是本地修改的内容

=======

这里是远程修改的内容

>>>>>>> branch_name

======= 之前表示本地修改的内容,之后表示远程修改的内容。

找到本地仓库的对应文件的对应位置,根据实际情况选择保留哪一部分或者进行手动合并。合并完成后,再次提交修改即可解决冲突。

更多git命令移步极客教程git教程

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xvwen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值