更新时间:2021-12-23 10:42:05 来源:极悦 浏览1876次
在 Git 中,合并是连接分叉历史的过程。它将两个或多个发展历史连接在一起。git merge 命令可以帮助您获取 git branch 创建的数据并将它们集成到单个分支中。Git merge 会将一系列提交关联到一个统一的历史记录中。一般使用 git merge 来合并两个分支。
git merge 命令用于合并分支。
git merge 命令的语法如下:
$ git merge <查询>
它可以在各种上下文中使用。一些如下:
场景 1:将指定的提交合并到当前活动的分支:
使用以下命令将指定的提交合并到当前活动的分支。
$ git merge <提交>
上面的命令会将指定的提交合并到当前活动的分支。您还可以通过在 中传入分支名称来将指定的提交合并到指定的分支。让我们看看如何提交到当前活动的分支。
请参阅以下示例。我对我的项目文件newfile1.txt进行了一些更改,并将其提交到我的测试分支中。
复制要在活动分支上合并的特定提交并执行合并操作。请参阅以下输出:
在上面的输出中,我们已经合并了活动分支 test2 中的先前提交。
场景 2:将提交合并到主分支:
要将指定的提交合并到 master,首先要发现它的提交 id。使用 log 命令查找特定的提交 ID。
$git log
请参阅以下输出:
要将提交合并到 master 分支,请切换到 master 分支。
$ git checkout master
现在,切换到分支“master”以对提交执行合并操作。使用 git merge 命令和 master 分支名称。其语法如下:
$ git merge master
请参阅以下输出:
如上面的输出所示,提交 ID 为2852e020909dfe705707695fd6d715cd723f9540的提交已合并到主分支中。master 分支中的两个文件已更改。但是,我们已经在测试分支中进行了此提交。因此,可以合并任何分支中的任何提交。
打开新文件,您会注意到我们提交给测试分支的新行现在被复制到主分支上。
场景 3:Git 合并分支。
Git 允许将整个分支合并到另一个分支中。假设您在一个分支上进行了许多更改,并希望一次合并所有这些更改。Git 允许您这样做。请参阅以下示例:
在给定的输出中,我对 test 分支上的 newfile1 进行了更改。现在,我已经在测试分支中提交了这个更改。
现在,切换到要合并的所需分支。在给定的示例中,我已切换到 master 分支。执行以下命令将整个分支合并到活动分支中。
$ git merge <branchname>
从给定的输出中可以看出,分支 test2 的整个提交已合并到分支 master。
当两个分支尝试合并,并且同时在同一个文件中进行编辑时,Git 将无法确定要采用哪个版本进行更改。这种情况称为合并冲突。如果发生这种情况,它会在合并提交之前停止,以便您可以手动解决冲突。
让我们通过一个例子来理解它。
假设我的远程存储库已被我的两个团队成员user1和user2克隆。user1 在我的项目索引文件中进行了如下更改。
借助 git add 命令在本地存储库中更新它。
现在提交更改并使用远程存储库更新它。请参阅以下输出:
现在,我的远程存储库将如下所示:
它将显示文件的状态,例如由谁和何时编辑。
现在,与此同时,user2也更新索引文件如下。
User2 已添加并提交本地存储库中的更改。但是当他试图将它推送到远程服务器时,它会抛出错误。请参阅以下输出:
在上面的输出中,服务器知道该文件已经更新并且没有与其他分支合并。因此,推送请求被远程服务器拒绝。它会抛出一个错误消息,比如[rejected] failed to push some refs to 。它会建议您在推送之前先拉取存储库。请参阅以下命令:
在给定的输出中, git rebase 命令用于从远程 URL 中拉取存储库。在这里,它会在 中显示类似合并冲突的错误消息。
要解决冲突,需要知道冲突是否发生以及发生的原因。Git合并工具命令用于解决冲突。合并命令的使用如下:
$ git mergetool
在我的存储库中,它将导致:
上面的输出显示了冲突文件的状态。要解决冲突,只需按I 键进入插入模式并根据需要进行更改。按Esc 键, 退出插入模式。输入:w! 在编辑器底部保存并退出更改。要接受更改,请使用 rebase 命令。它将按如下方式使用:
$ git rebase --continue
因此,冲突已经解决。请参阅以下输出:
在上面的输出中,冲突已经解决,本地存储库与远程存储库同步。如果大家想了解更多相关知识,可以关注一下极悦的Java极悦在线学习,里面的课程内容全面,从入门到精通,适合零基础的小伙伴学习,希望对大家能够有所帮助。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习