git:创建于合并分支

 

 


 

创建于合并分支

 

涉及到的命令

复制代码
查看分支:$git branch

创建分支:$git branch name

切换分支:$git checkout name

创建+切换分支:$git checkout –b name  = $git branch name  +  $git checkout name

合并某分支到当前分支:$git merge name

删除分支:$git branch –d name
复制代码

在版本回填退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

在查看分支的时候,当前分支前面会有一个" * "标记,并且当前分支标记颜色(我的机器是绿色)。

 

1.创建分支的时候,一定要在git仓库中创建。一般进库的话默认是master分支。

如图,在不是git仓库目录下创建分支"dev",报错。

 

 正确创建分支,如图:

 

 

2.创建分支后

以分支"dev"为例,初始时dev分支和master分支的内容是一致的。后续若在"dev"分支下修改文件内容的话,若没有git add到暂存区然后git commit到仓库,那么dev和master内容是同步的,即此时dev的修改后内容在master分支下的该文件中,也是可以看到的(即使是新建的文件也一样)。只有在dev分支下将该修改后的文件提交到版本仓库后,master分支才是原来的内容。然后若master分支想和dev分支一致,那么可以执行分支合并操作。如图:

①在dev分支下,新建Test.txt文件后,在没有将Test.txt文件commit到仓库之前,dev分支的内容和master的内容双方保持同步。

  新建Test.txt文件,但还未git add Test.txt到暂存区。

 

   新建Test.txt文件,将文件git add到暂存区,但还未commit到仓库。其master分支内容与dev分支内容依旧保持一致。

 

 ②接上,再次切换到dev分支,然后将Test.txt文件commit到仓库后,再次切换分支查看。

 

 

3.合并分支,即可以把dev分支上的内容合并到分支master上了,可以在master分支上。

分支合并到master后,dev分支则会恢复到最初创建该分支时的状态(即该仓库下的文件/目录恢复为创建dev分支时的状态)。

  在master分支下使用如下命令 $git merge dev ,合并其他分支到当前分支下。

 

 git merge命令用于合并指定分支到当前分支上,合并后,再查看readme.txt内容,可以看到,和dev分支最新提交的是完全一样的。

注意到上面的"Fast-forward"信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

4.删除dev分支

 

 

通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。

即合并dev分支,使用命令 $git merge  –no-ff  -m “注释” dev

如图示例:

 

 

分支策略:

分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

 


 

解决分支冲突

场景:还是以master和dev分支为例,用户在master分支和dev分支下编辑同名文件,dev分支下该文件已经commit到仓库的情况下,在master分支下合并dev分支,会出现冲突。(这种情况可能是git版本低的原因,我使用的git2.33.1版本没有该场景),如上实验,master分支与dev分支是实时保持同步的,因此当你在master编辑修改信息时,dev的内容已经显示在master上,即时你同行修改,或在"dev分支的原内容下修改",依旧是同步的,合并分支并不会产生冲突(已在git2.33.1版本测试过)。此情况只适用于在主分支master和只有一个分支的情况下。当除了master主分支外,还有多个分支时,在主分支master进行megre合并时,当代码内容不一致时,还是会产生冲突。

该冲突场景链接地址为:Git使用教程,最详细,最傻瓜,最浅显,真正手把手教 - 知乎 (zhihu.com)

下面是该场景的复制

下面我们还是一步一步来,先新建一个新分支,比如名字叫fenzhi1,在readme.txt添加一行内容8888888,然后提交,如下所示:

 

 同样,我们现在切换到master分支上来,也在最后一行添加内容,内容为99999999,如下所示:

 

 现在我们需要在master分支上来合并fenzhi1,如下操作:

 

 Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<HEAD是指主分支修改的内容,>>>>>fenzhi1 是指fenzhi1上修改的内容,我们可以修改下如下后保存:

 

 如果我想查看分支合并的情况的话,需要使用命令 git log.命令行演示如下:

 

posted @   浮~生  阅读(71)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示