您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
git初探-经典案例
 
作者:slingsky
   次浏览      
 2020-7-9 
 
编辑推荐:
本文介绍了经典案例, 有了它可以更好的帮助我们去理解git。
本文来自于csdn,由火龙果软件Anna编辑、推荐。

前言

1.开发某个网站。

2.为实现某个新的需求,创建一个分支。

3. 在这个分支上开展工作。

正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理:

1.切换到你的线上分支(production branch)。

2.为这个紧急任务新建一个分支,并在其中修复它。

3.在测试通过之后,切换回线上分支,然后合并这个修补分支,最后将改动推送到线上分支。

4.切换回你最初工作的分支上,继续工作。

那么假设我们现在已经有了个工作流(master),为了新的需求,我们需要开设新开设一个分支,并切换到当前分支上(git checkout -b iss53),整个分支状态如下图所示,哈哈~ 是不是感觉图很眼熟,没错,就是你想的那样的

然后我们在iss53的分支上进行我们新需求的编写并进行提交(commit),得到如下图的一个状态。

突然,你接到了个紧急电话需要对原始代码进行紧急修复,而新需求还未开发完成,那么怎么办呢?这时,我们应切换到master分支,然后在当前版本下开设一个新的紧急分支,进行问题修复,然后提交(commit)。这时我们的git仓库则会呈现如下的一个状态。

我们可以看到,hotfix 与 iss53 都是基于master所开设的两个分支。当我们在分支(hotfix)进行完紧急修复后,并测试没有为题后,这时,我们再切换到master上将hotfix合并进来(git merge master)。

由上图,我们可以发现,这次合并是一次快进(fast-forward)的操作,那么何为快进呢?由于当前 master?分支所指向的提交是你当前提交(有关 hotfix 的提交)的直接上游,所以 Git 只是简单的将指针向前移动。换句话说,当你试图合并两个分支时,如果顺着一个分支走下去能够到达另一个分支,那么 Git 在合并两者的时候,只会简单的将指针向前推进(指针右移),因为这种情况下的合并操作没有需要解决的分歧——这就叫做 “快进(fast-forward)”。

现在我们的git仓库为上图所示,下面我们只需要将master上的最新代码提交到远程仓库就好(git push origin master:<远程分支名>),一般项目,我们可能并没有master的权限,可能需要我们将本地的master分支推到远程的一个开发分支上,当然最简单的做法是在本地开设一个与远程分支名相同的分支做为主分支,这样当我们在push时,直接git push 即可。

好了,现在我们已经将紧急的需求处理完并且上传,那么hotfix这个分支我们也就不再需要了,下面直接将它删除就好(git branch -d hotfix),最后我们会得到一个清晰的代码库。然后我们继续在iss53分支上进行我们新的需求,直到新需求编写完成。

最后,我们将已经开发完了的新需求合并到master上,并将最新代码提交到远程仓库。

可以看出这次合并跟上一次合并有所不同,由于,master分支所在提交并不是iss53分支所在提交的直接祖先,Git 不得不做一些额外的工作。 出现这种情况的时候,Git 会使用两个分支的末端所指的快照(C4和C5)以及这两个分支的工作祖先(C2),做一个简单的三方合并。

最后,我们将得到如上图一样结构的代码库,这时再将master上的代码推送到远程分支即可。

到此,我们的案例已经说完,从中我们发现,在这个开发工程中,master就像是一条河流的主线,无论你有多少个分叉,分叉上又有着怎么样的风景,到最后都会汇集成一条河流。

 

 
   
次浏览       
相关文章

每日构建解决方案
如何制定有效的配置管理流程
配置管理主要活动及实现方法
构建管理入门
相关文档

配置管理流程
配置管理白皮书
CM09_C配置管理标准
使用SVN进行版本控制
相关课程

配置管理实践
配置管理方法、工具与应用
多层次集成配置管理
产品发布管理
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]
 
最新文章
git原理图解
Git分支管理实践
Git学习和项目应用实例
Git 天天用 但是 Git 原理你了解吗?
对比 Git 与 SVN,这篇讲的很易懂
最新课程
Git版本控制系统
配置管理与持续集成实践
配置管理方法、实践、工具与应用
持续集成与敏捷开发
配置管理实践(从组织级到项目级)
更多...   
成功案例
某单位研发中心 产品集成与服务平台
某电子制造商 配置管理与持续集成
北京 配置管理与持续集成实践
金雅拓 分布式持续集成工具链
北京 持续集成测试最佳实践
更多...