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分支,并将远程源站仓库的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 无法确定应该使用哪个版本的内容,需要人工干预才能继续合并。这样的设计原则更有利于尺寸码的安全。
提交代码时如何避免和解决冲突?
git status
命令查看当前分支的状态,确保HEAD
指正指向的是正确的接收合并的分支。如果不是,执行git checkout
命令切换到正确的分支。- 确保合并操作涉及的两个分支都更新到远程仓库的最新状态。执行
git fetch
拉取远程仓库的最新提交。 - 在编写代码是执行
git merge
命令,将代码融合到主分支上,确保提交内容都是最新内容。(2,3可以直接用git pull
代替)
即使采取了上述步骤,协作开发过程中仍然会遇到冲突,需要人为干预来解决冲突。
在本地模拟冲突,在主分支的基础上创建一个新分支,修改两个分支中相同的内容,并将主分支提交到远程仓库。如果在本地切换分支,会遇到git推送冲突的情况。
- 执行
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 教程