图解4种git合并分支方法

author author     2023-03-13     422

关键词:

参考技术A 原文网址: http://yanhaijing.com/git/2017/07/14/four-method-for-git-merge/

有时候我们会后悔,有时候我们会想回到过去,有时候我们想改变历史,然而在我们这个世界,目前来看是无法回到过去改变历史的

但在git的世界里,一切皆有可能,我们可以在多维空间里任意切换,随意改变一个宇宙的时间线,只要我们愿意,git的分支就是这么神奇

然而很多时候你以为你改变了历史,不为人知,那个宇宙并没有消失,而是遗失在了git的世界里,有能力的人便能找到

彼此分开的世界也能随时交叉合并,世界就这样开开合合,偶会需要解决合并冲突

git中的分支非常的轻量,其实就是一个文件,里面记录了分支所指向的commit id,下图中有两个分支分别是master和test,他们都指向了A2这个提交,HEAD是一个特殊的指针,他永远指向你当前所在的位置;有时候你可能不在某一个分支上,不要惊慌,你随时有权利去你想去的分支,git赋予了你新建,切换分支的能力

然后有时候世界并不总如上图那般美好,面对分叉的两个分支,git新手总是一脸茫然,本文我将讲述git中合并分支的方法

在git中合并分支有三种方法,分别是merge,rebase,cherry-pick,而其中merge又有三种区别,下面将一一介绍

如果待合并的分支在当前分支的下游,也就是说没有分叉时,会发生快速合并,从test分支切换到master分支,然后合并test分支

这种方法相当于直接把master分支移动到test分支所在的地方,并移动HEAD指针

如果我们不想要快速合并,那么我们可以强制指定为非快速合并,只需加上 --no-ff 参数

这种合并方法会在master分支上新建一个提交节点,从而完成合并

svn的在合并分支时采用的就是这种方式,squash会在当前分支新建一个提交节点

squash和no-ff非常类似,区别只有一点不会保留对合入分支的引用

当要合并两个分叉的分支时,merge的方式是将待合入分支和当前分支不同的部分,在当前分支新建节点,如下图所示

rebase与merge不同,rebase会将合入分支上超前的节点在待合入分支上重新提交一遍,如下图,B1 B2会变为B1’ B2’,看起来会变成线性历史

这命令简直就是神器,给你自由,你想把那个节点merge过来就把那个节点merge过来,其合入的不是分支而是提交节点

只有知道了这些合并方式的区别,才能git在手,天下我有,任你分支在凌乱,我自岿然不动

原文网址: http://yanhaijing.com/git/2017/07/14/four-method-for-git-merge/

git分支实战入门详细图解(代码片段)

现在我们模拟一个简单的分支和合并案例,其中工作流可供真实项目借鉴。(1)在master开展工作(2)为新的需求创建分支(3)在新的分支上展开工作这时,你接到一个电话,说项目有一个严重的问题需要紧急修复。你随后会这... 查看详情

图解git基本命令merge和rebase(代码片段)

Git基本命令merge和rebase,你真的了解吗?前言Git中的分支合并是一个常见的使用场景。仓库的bugfix分支修复完bug之后,要回合到主干分支,这时候两个分支需要合并;远端仓库的分支A有其他小伙伴合入了代码,这时候,你需要和... 查看详情

动画图解git命令

?Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,是目前使用范围最广的版本管理工具尽管Git是一个非常强大的工具,但我认为大多数人都会同意我的说法,即它也可以是。。。彻... 查看详情

git合并分支的时候会遇到的问题

在码云上传代码的时候,合并分支的时候,有时候会遇到以下的问题:   Pleaseenteracommitmessagetoexplainwhythismergeisnecessary,  #especiallyifitmergesanupdatedupstreamintoatopicbranch.  这个时候页面仿佛被锁住一样,,不能进行任何操作,在网上... 查看详情

如何删除所有已合并的 Git 分支?

】如何删除所有已合并的Git分支?【英文标题】:HowcanIdeleteallGitbrancheswhichhavebeenmerged?【发布时间】:2011-09-0121:49:41【问题描述】:我有很多Git分支。如何删除已经合并的分支?有没有一种简单的方法可以将它们全部删除而不是... 查看详情

git:初始化项目创建合并分支回滚等常用方法总结(代码片段)

...切换分支gitbranch//查看当前分支gitbranch-ddev//删除dev分支Git合并分支内容gitmergedev命令用于合并指定分支到当前分支,如果当前在master分支,那么这条命令就是把dev合并到masterGit回滚Git查看历史版本gitlogGit两种方式回滚方法1:gitres... 查看详情

eclipse中的git插件合并多个分支

方法/步骤 1首先我们把主分支和other分支合并,切换到主分支步骤阅读2第二步右击team->merge3弹出merge框以后个人建议首先本地合并然后push到远程,选择local分支里的合并目标分支other,点merge。4这次合并不会出现冲突,我们... 查看详情

git:合并分支----gitmerge命令应用的三种情景

Git:合并分支----gitmerge命令应用的三种情景 查看详情

[git]图解git

http://www.cnblogs.com/simadi/p/5072480.html最近搞CI,这个得搞搞,所以就学了学git.sourcetree  从库中获取代码-------新分支(检出dev)----修改/提交------推送分支发布新版本------合并dev至master/打tag修复bug: stashdev---切到master---新建切换b... 查看详情

vscode中git解决冲突,合并代码的两种方法(代码片段)

一.背景:今天在把pre-master分支代码合并到master分支时候,出现了代码冲突,当时在没有先解决冲突的情况下,稀里糊涂点击了vscode工具栏左侧的暂存,现在记录一下。下图是稀里糊涂暂存的然后push到了master... 查看详情

git新建分支/切换分支/合并分支使用方法

我的源码在阿里云的git上存储着呢1.在code.aliyun.com上新建分支 fixbug2.通过在phpstorm中右键项目》》VSC>>Git>>Fetch即可获取远程所有分支3.在phpstorm右下角有显示当前分支,将其选择为checkoutasnewlocalbranch4.然后在localBranches... 查看详情

通过 gitlab(或 git)合并分支的最快方法?

】通过gitlab(或git)合并分支的最快方法?【英文标题】:Fastestwaytomergebranchesviagitlab(orgit)?【发布时间】:2015-10-2100:11:40【问题描述】:我有一个开发分支和一个生产分支。我将更改从我的开发服务器推送到远程gitlab安装。然后... 查看详情

git命令进行分支合并(代码片段)

方法1、使用git命令合并分支1、使用命令查看当前所属分支gitbranch2、拉取项目最新的代码gitpull3、将A分支的代码合并至B分支上//首先切换分支到想合并的分支上gitcheckoutBgitmergeA4、添加至本地仓库,提交一气呵成gitadd.gitcommit-m... 查看详情

git从青铜到王者第四篇:git的分支与合并(代码片段)

...it分支简介2.Git分支创建3.Git分支切换二、Git分支的新建与合并1.新建分支2.分支的合并3.遇到冲突时的分支合并三、分支管理四、分支开发工作流1.长期分支2.主题分支五、远程分支1.推送2.跟踪分支3.拉取4.删除远程分支六、变基1.... 查看详情

git如何把master代码合并覆盖到自己的分支?(代码片段)

需求:近期由于项目紧急需求,先在master分支替换了生产的域名,进行了发版;就导致master分支和pre-master分支代码不一致解决方法:现在有两种方法可保持两个分支代码一致方法11)先切换到master主分支git... 查看详情

git工作流程

...分隔离。当feature分支中的功能开发完成后,这个分支就合并到master分支。所以feature分支的生命周期比较短。3.Developer开发分支开发分支基于master分支创建,并与master一样长期存在。开发分支是开发时随时提交的代码,master分支... 查看详情

在 Git 中将选定提交从一个分支合并到另一个分支的更好方法

】在Git中将选定提交从一个分支合并到另一个分支的更好方法【英文标题】:WhichisbetterwaytomergeselectedcommitsfromonebranchtootherbranchinGit【发布时间】:2019-01-2111:03:06【问题描述】:我有Master和Develop分支,开发人员在发布时将其代码... 查看详情

在idea中git合并分支报错,请问如何解决

这是文件冲突了,有2种方式:gitstatus查看哪些文件冲突,解决后gitadd冲突文件,最后gitrebase--continue放弃当前操作,直接gitrebase--abort参考技术A用内部寄存器做过度,4条分支输出状态存储到一个内部寄存器中,另外同理~ 查看详情