8.Git分支-分支的创建与合并-01

时间:2022-04-27 12:35:30

1.新建分支

   git checkout -b <branch-name>  创建一个分支并且切换到这个分支。

   git checkout -b <branch-name> = git branch <branch-name> + git checkout <branch-name> 

例子:1.假设你现在在开发一个项目,而且已经有了一些提交。如下图所示。

8.Git分支-分支的创建与合并-01

  2.这时候,有客户报了一个defect需要你修复,代号是#53,这时候你可以使用 git checkout -b <branch-name> 创建一个iss53的分支去解决这个defect。 创建成功之后,分支情况如下图所示。

8.Git分支-分支的创建与合并-01

  3.经过一段时间的奋力开发,你终于提交了一些代码去解决这个defect。iss53分支随着你的提交而向前移动。 提交之后的分支情况如下图所示。

8.Git分支-分支的创建与合并-01

  4.这时候,又有一个非常紧急的bug需要你去修复,其优先级高于iss53。你应该怎么做?在Git中你不需要将你针对iss53的代码的修改进行还原。你需要做的仅仅只是切换回master分支是上,并且创建一个分支去fix这个bug,然后在hotfix分支上去fix这个紧急的bug。执行 git checkout master  git checkout -b hotfix 两条命令。

  注意:由于git checkout master会将你的工作区域恢复成master分支上最后一次提交时候的样子,所以你需要确保你的暂存区和工作区中所有针对iss53的修改都已经被commit了,否则Git会阻止你直接切换到master分支。

  当你创建了hotfix分支,并且有了一定的提交之后的分支情况如下图所示。

8.Git分支-分支的创建与合并-01

  5.当hotfix分支的开发完成之后,你可以进行相关的测试,测试通过之后,然后可以使用将其合并到master分支上,部署到线上。

   $ git checkout master

   $ git merge hotfix

  注意:git merge的含义是将hotfix分支的内容合并进master分支,也就是说使master分支能够引用到hotfix分支的代码,观察上图可以发现,Git只需要将master指针向前(右)移动就可以了。这种情况的合并在Git中被称为快进(fast-forward),因为只是移动了指针。

  合并完成之后,分支情况如下图所示:

8.Git分支-分支的创建与合并-01

  需要紧急修复的bug已经被修复了,我们创建的hotfix分支,这时候就可以被删除了。

  使用 $ git branch -d hotfix 删除一个分支。

  6.这时候,你可以切换回iss53分支,进行以前还没有完成的工作。

  使用 git checkout iss53  ,然后你就可以继续去解决#53这个defect了。

8.Git分支-分支的创建与合并-01

  注意:你关于hotfix的代码并没有包含在iss53中,你可以等待iss53开发完成之后,直接将iss53合并到master中;或者将master中的代码合并到iss53中之后在进行开发。