git merge

我们在前面创建的develop分支上提交一个改动

修改仓库中index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>Git-师否</title>
  </head>
  <body>
    <div>我是新增的一行</div>
    <div>我是在develop分支上新增的行</div>
  </body>
</html>
$ git add index.html
$ git commit -m 在develop分支新增了一行div
[develop 89883a8] 在develop分支新增了一行div
 1 file changed, 1 insertion(+)

在develop上提交了新的改动之后,分支线如下图所示:

当我们在新分支develop上把功能开发完成之后,需要把该分支上的开发的功能都迁移到主分支上,只需要使用git merge 命令把新分支合并到主分支就行

首先切换到主分支 master上

$ git checkout master
切换到分支 'master'

然后在master分支上执行合并命令

$ git merge develop
更新 81b4a4c..89883a8
Fast-forward
 index.html | 1 +
 1 file changed, 1 insertion(+)

其中Fast-forward表示本次合并是快进合并,也就是直接把master指向develop的当前提交

合并成功之后分支线如下图所示

那什么情况下执行快进合并,什么情况下执行非快进合并呢

Fast-forward (—ff) 快进合并

如果当前分支相比于我们要合并的分支没有额外的提交(commit)时,可以执行 fast-forward 合并。Git 很懒,首先会尝试执行最简单的选项:fast-forward!这类合并不会创建新的提交,而是会将当前分支指向要合并的分支的最新提交

No-fast-foward (—no-ff)

如果在当前分支上提交了要合并的分支不具备的改变,那么 git 将会执行 no-fast-forward 合并。

使用 no-fast-forward 合并时,Git 会在当前活动分支上创建新的 merging commit

结果是一样的,dev上的改变合并到了master上,只是在master分支上多了一次合并提交

如果合并过程中发现有冲突文件,就解决完冲突再合并

最后更新于

这有帮助吗?