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分支上多了一次合并提交
如果合并过程中发现有冲突文件,就解决完冲突再合并
最后更新于
这有帮助吗?