【git merge/rebase】详解合并代码、解决冲突

这篇具有很好参考价值的文章主要介绍了【git merge/rebase】详解合并代码、解决冲突。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【git merge/rebase】详解合并代码、解决冲突,开发工具,github,intellij-idea,git,java,原力计划

【git merge/rebase】详解合并代码、解决冲突,开发工具,github,intellij-idea,git,java,原力计划

目录

1.概述

2.merge

3.rebase

4.merge和rabase的区别

5.解决冲突


1.概述

在实际开发中,一个项目往往是多个人一起协作的,头天下班前大家把代码交到远端仓库,第二天工作的第一件事情都是从服务器上拉最新的代码,保证代码版本的一致性。在这种团队协作中大家修改到同一份文件是难以避免的。在git的机制中,只要远端和本地仓库中对同一份文件进行了修改,就认定为冲突,需要开发者来手动合并二者的冲突。在git中合并代码的常用方式有两种:

  • merge
  • rebase

merge用来合并分支,rebase用来变基。

2.merge

Git的merge命令用于将两个或多个分支的代码合并到一个新的或现有的分支中。合并操作将两个分支的历史记录集成到一个新的提交中,这使得不同开发者在不同分支上的工作能够被合并到一起。

常见的用法:

将指定的分支(<branch-name>)合并到当前所在的分支中:

git merge <branch-name>

合并远程分支 origin/feature-branch 到当前分支:

git merge origin/feature-branch

支持的一些参数:

-m <message> 用于指定合并提交的提交信息
-no-ff 禁用快进合并(fast-forward merge),即使可以快进合并,也创建一个新的合并提交。这样可以保留每个分支的历史记录。
-squash 将多个提交压缩成一个提交,然后再合并。

3.rebase

git rebase,变基,其能实现和merge相同的效果,将一个分支上的版本变化合并到另一个分支上去。

一下是一些常见用法:

git rebase <base-branch>

这个命令的意思是,将当前分支的修改(即当前分支相对于 <base-branch> 的变化)在 <base-branch> 上重新应用一遍。

4.merge和rabase的区别

【git merge/rebase】详解合并代码、解决冲突,开发工具,github,intellij-idea,git,java,原力计划

merge 和 rebase 是 Git 中用于将分支合并的两种不同方法,它们各自有不同的用途和影响。以下是它们之间的主要区别:

1. Merge(合并):
创建新的合并提交: merge 将源分支的所有提交合并成一个新的合并提交,它保留了原有的提交历史。在合并时,Git 会创建一个新的合并提交,将所有合并的提交信息保存下来。

不修改提交历史: 合并操作不修改源分支和目标分支的提交历史,每个分支的提交历史都会保持不变。这意味着,你可以清晰地看到哪些提交是在哪个分支上完成的。

保留分支的独立性: 合并保留了每个分支的独立性,即使两个分支合并了,它们的提交历史仍然可以追溯到各自的起点。

2. Rebase(变基):
将一系列提交应用到另一个基础上: rebase 会将当前分支的提交“挪动”到目标分支上,使得当前分支的提交历史变得更加线性。它会将一系列提交应用到另一个基础上,使得提交历史变得更加干净、易读。

修改提交历史: Rebase 会修改提交历史,因为它将当前分支的提交重新应用到了新的基础上。这样,你可以在提交历史中看到一个更连贯的提交序列。

可能会丢失分支独立性: 由于 rebase 将提交历史变得线性,所以在 rebase 后,你无法直观地看出哪些提交是在原分支上完成的,可能会丢失分支的独立性。

5.解决冲突

不管是merge也好还是rebase也好,涉及到代码的合并就一定会或多或少涉及冲突问题,接下来聊一下怎么解决冲突。

首先博主在远端仓库和本地同时修改一个类来模拟远端他人的提交和本地自己的提交的冲突。

远端修改:

在远端仓库上点击编辑文件的按钮可以编辑该文件。

【git merge/rebase】详解合并代码、解决冲突,开发工具,github,intellij-idea,git,java,原力计划

这里我们把main方法删掉,修改完文件后点击commit changes可以保存:

【git merge/rebase】详解合并代码、解决冲突,开发工具,github,intellij-idea,git,java,原力计划

本地修改:

【git merge/rebase】详解合并代码、解决冲突,开发工具,github,intellij-idea,git,java,原力计划

将本地修改推送到远端时,会直接被拒绝:

push of current branch main was rejected.remote changes need to be merged before pushing.

很明显在提示远端有修改需要先合并一下才能推送。

【git merge/rebase】详解合并代码、解决冲突,开发工具,github,intellij-idea,git,java,原力计划

点击merge或者重新pull,进入合并冲突的界面,手动来解决冲突问题:

【git merge/rebase】详解合并代码、解决冲突,开发工具,github,intellij-idea,git,java,原力计划

中间的是最终的合并结果,可以手动来调整,点击左右各自的箭头可以将箭头后面扩进去的这一块儿改动,合到结果中去。当然也可以直接不合并,直接选择远端或者本地的版本来作为最后的结果。在上一个界面中有accept yours(以本地为准),accept theris(以远端为准);在手动合并的界面左下角有accept left和accept right,都可以用来整体选择一个版本作为最终的合并结果。

【git merge/rebase】详解合并代码、解决冲突,开发工具,github,intellij-idea,git,java,原力计划

合并完成后需要重新推送:

【git merge/rebase】详解合并代码、解决冲突,开发工具,github,intellij-idea,git,java,原力计划文章来源地址https://www.toymoban.com/news/detail-712727.html

到了这里,关于【git merge/rebase】详解合并代码、解决冲突的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git 三种合并方式(rebase / merge / squash)

    在使用 Git (分布式版本控制系统),往往不会直接在主分支上面直接开发,而是新建一个分支进行开发。 那么当我们在新分支上面完成一个功能时,便需要合并到主分支。 merge rebase and merge squash and merge 初始化 图 1 图1,初始两个分支的状态,现基于此对合并(merge)和变基

    2024年03月11日
    浏览(39)
  • Git分支的合并策略有哪些?Merge和Rebase有什么区别?关于Merge和Rebase的使用建议

    参考:《Git 权威指南》、《Git团队协作》、快手git管理 (1)工作区域 首先来介绍介绍下Git的工作区域,分为 工作区 、 暂存区 和 仓库区 ,每个区域的转换关系如上图所示。 工作区(workspace) :就是我们平时本地存放项目代码的地方; 暂存区(index/stage) :用于临时存放

    2024年02月04日
    浏览(32)
  • git rebase (合并代码和整理提交记录)图文详解

    建议在看这篇文章之前一定要看完:git reset 命令详解 git revert命令详解。 看完上面的文章后,在rebase操作(成功/失误)后还可以进行回退。不至于咱们再去费劲创建那些提交记录。 git rebase 有两种作用 合并代码 整理提交记录 可以看到有两个分支,2023的分支是在master的基础

    2024年02月09日
    浏览(25)
  • git整合分支的两种方法——合并(Merge)、变基(Rebase)

    问题描述: 初次向git上传本地代码或者更新代码时,总是会遇到以下两个选项。有时候,只是想更新一下代码,没想到,直接更新了最新的代码,但是自己本地的代码并没有和git上的代码融合,反而被覆盖了。 解决办法: 当我们从git上更新代码时,选择“在传入变基当前分

    2024年04月28日
    浏览(29)
  • Git的merge合并代码详解

    当我们做好了一个新功能或者修复了一个bug之后怎么把它应用到主分支上呢?这就需要代码进行代码合并了。 这里研究merge合并方式。 我初始化一个git仓库 test_merge;然后进入test_merge文件夹;然后新建文件a.txt;然后进行add、commit; 然后查看日志: git log 可以看到我们已经创

    2024年02月08日
    浏览(24)
  • Idea中解决Git冲突问题及merge代码消失问题【git常用tips】

    Git命令全系列 我们可以通过Idea直接从GitLab或GitHub等平台上拉取代码 如果上述的小技巧拉取不下来,尝试勾选下图的选项 2.1 演示冲突(GitLab) ①首先在GitLab中或者任意代码托管平台创建一个自己的仓库 通过上面的命令将仓库克隆下来 ②在自己的项目中,任意创建一个类 ③

    2024年01月25日
    浏览(20)
  • 解决新版vscode在git merge代码的时候,解决代码冲突的选项按钮不见的问题

    由于vscode新版本中,在git merge代码的时候,解决代码冲突的选项按钮不见了,目前了解1.70.0-1.80.0版本都有这个问题, 如图: 解决方法: 点击设置搜索’merge editor’,如图: 取消勾选后,冲突代码解决按钮会出现; 注意此处按钮勾选状态和意思是相反的,默认是勾上的

    2024年02月15日
    浏览(19)
  • git merge与git rebase详解

    参考:         http://t.csdn.cn/CkVrR         https://blog.csdn.net/weixin_42310154/article/details/119004977 (1)merge  (2)rebase 经验:         一般来说,不推荐使用rebase。         但为了让分支树看起来更简化,个人分枝偶尔也会选用rebase。这样可以线性的看到每一次提交,

    2024年02月16日
    浏览(19)
  • git代码合并、git解决冲突的方法?

    Git是一种分布式版本控制系统,它提供了多种方法来合并代码和解决冲突。下面是两个常见的场景以及对应的操作步骤: 合并分支 当我们在一个项目中有多个分支时,需要将不同分支中的代码合并到一起。假设我们有一个主分支master和一个开发分支dev,现在需要将dev分支合

    2024年02月02日
    浏览(24)
  • Git rebase和merge区别详解

    此文在阅读前需要有一定的git命令基础,若基础尚未掌握,建议先阅读这篇文章Git命令播报详版 在 Git 中整合来自不同分支的修改主要有两种方法: merge 以及 rebase (变基),本文主要讲解 rebase 用法。 当开发任务分叉到两个不同分支,又各自提交了更新。 整合分支最容易的方

    2024年02月14日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包