Git教程
Git基础
Git 操作

Git conflict

在Git中,合并是连接分支历史记录的过程。它把两个或多个开发历史联系在一起。 git merge命令可帮助您获取git分支创建的数据并将其集成到单个分支中。 Git合并会将一系列提交关联到一个统一的历史记录中。通常,git merge用于合并两个分支。
Git合并和合并冲突
用于维持不同的发展路线;在某个阶段,您希望将更改合并到一个分支中。
在上图中,有两个分支 master 和 features 。我们可以看到我们在功能和master分支中都进行了一些提交,并将它们合并。它用作指针。它将在分支之间找到一个共同的基础提交。一旦Git找到一个共享的基本提交,它将创建一个新的"合并提交"。它结合了每个排队的合并提交序列的更改。

" git merge"命令

git merge命令用于合并分支。
git merge命令的语法如下:
$ git merge <query>
可以在各种情况下使用。一些如下:
方案1: 要将指定的提交合并到当前活动的分支中:
使用以下命令合并指定的提交到当前活动的分支。
$ git merge <commit>
上面的命令会将指定的提交合并到当前活动的分支中。您还可以通过在 中传入分支名称来将指定的提交合并到指定的分支。让我们看看如何提交到当前活动的分支。
请参见下面的示例。我对项目的文件 newfile1.txt 进行了一些更改,并将其提交到我的 test 分支中。
Git合并和合并冲突
复制要在活动分支上合并的特定提交并执行合并操作。参见以下输出:
Git合并和合并冲突
在上面的输出中,我们已经在活动分支test2中合并了先前的提交。
方案2: 要将提交合并到主分支中:
To将指定的提交合并到主提交中,首先发现其提交ID。使用log命令查找特定的提交ID。
$git log
请参见以下输出:
Git合并和合并冲突
要将提交合并到master分支中,请切换到master分支。
$ git checkout master
现在,切换到分支" master"以对提交执行合并操作。与主分支名称一起使用git merge命令。语法如下:
$ git merge master
请参见以下输出:
Git合并和合并冲突
如上面的输出所示,提交ID为 2852e020909dfe705707695fd6d715cd723f9540 的提交已合并到master分支中。 master分支中有两个文件已更改。但是,我们已在 test 分支中进行了此提交。因此,可以合并任何分支中的任何提交。
打开新文件,您会注意到我们已经提交给test分支的新行现在已复制到master分支上。
场景3: Git合并分支。
Git允许将整个分支合并到另一个分支中。假设您在分支上进行了许多更改,并且希望一次合并所有这些。 Git允许您这样做。参见以下示例:
Git合并和合并冲突
在给定的输出中,我在测试分支的newfile1中进行了更改。现在,我已在测试分支中进行了此更改。
Git合并和合并冲突
现在,切换到所需的分支合并。在给定的示例中,我已切换到master分支。执行以下命令,将整个分支合并到活动分支中。
$ git merge <branchname>

Git合并和合并冲突
从给定的输出中可以看到,分支test2的全部提交已合并到分支主服务器。

Git合并冲突

当两个分支试图合并时,两个分支都同时被编辑并且在同一个文件中,Git将无法识别要进行更改的版本。这种情况称为合并冲突。如果发生这种情况,它将在合并提交之前停止,以便您可以手动解决冲突。
Git Merge and Merge Conflict
让我们通过一个例子来理解它。
假设我的远程存储库已被我的两个团队成员 user1 和user2 。 user1在我的项目索引文件中进行了如下更改。
Git合并和合并冲突
借助git add命令在本地存储库中对其进行更新。
Git合并和Merge Conflict
现在提交更改并使用远程存储库进行更新。参见以下输出:
Git合并和合并冲突
现在,我的遥控器存储库将如下所示:
Git合并和合并冲突
它将显示
现在, user2 同时也按如下方式更新索引文件。
Git合并和合并冲突
User2已添加并提交了本地存储库中的更改。但是,当他尝试将其推送到远程服务器时,它将引发错误。参见以下输出:
Git合并和合并冲突
在上面的输出中,服务器知道该文件已经更新并且未与其他分支合并。因此,推送请求被远程服务器拒绝。它将引发错误消息,例如 [rejected]无法将某些引用推送到 。建议您在推送之前先拉出存储库。参见以下命令:
Git合并和合并冲突
在给定的输出中,git rebase命令用于从远程URL中提取存储库。在此处,它将显示错误消息,例如在 中合并冲突。

解决冲突:

要解决冲突,有必要知道冲突是否发生以及为什么发生。 Git merge工具命令用于解决冲突。 merge命令的用法如下:
$ git mergetool
在我的存储库中,它将导致:
Git合并和合并冲突
以上输出显示了冲突文件的状态。要解决冲突,只需按 I键进入插入模式,然后根据需要进行更改。按 Esc键,退出插入模式。在编辑器底部键入: w!以保存并退出更改。要接受更改,请使用rebase命令。它将使用如下:
$ git rebase--continue
因此,冲突已解决。参见以下输出:
Git合并和合并冲突
在上面的输出中,冲突已解决,本地存储库与远程存储库同步。
要查看文件中合并冲突的第一个编辑文本,请搜索带有冲突标记的文件> <<<<<。您可以在文本编辑器中的 <<<<<<<>>>>>> BRANCH-NAME 。在上面的示例中,user1在基础或HEAD分支中写了" <h1> Git版本控制</h1>",而user2在写了" <h2> Git是版本控制</h2>"。
确定是只保留分支的更改还是保留其他分支的更改,还是创建新的更改。删除冲突标记 <<<<<<<,=======,>>>>>>> 并创建要合并的最终更改。

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4