学习目的
- 区分‘–no-ff普通模式合并’和‘fast forward模式合并’的区别?
fast forward模式合并
- 分支合并之前查看分支历史
$ git log --graph --pretty=oneline
* 2fc181e173242bd21edad0ad0336f1a0ab0af3e7 (HEAD -> dev) add merge
* 14f2011cde83c68cea09d9843b0332fd9a2de052 (tag: v1.0.0) 解决冲突提交
|\
| * e3b6465fec0b0e626465b3a8608d44e6f6a26d82 测试分支冲突1的提交
* | 31fe6069a4abec6c36d1b080b3d33ee909703c54 测试分支冲突master提交
|/
* c2799ed0de7ba38bfaf813e886bffebd8e6ef6cf 提交分支git-study测试
* c8e9e508b22c94e9a15c9493d27017e8040cc2b0 (origin/master) 本地仓库命令总结 及 远程仓库创建学习
* 61500cbb98ea0c92d14d458bf687bbfc4f93793e git仓库
- 查看dev分支状态
$ git status
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
- 提交dev分支修改文件
$ git add readme.txt
$ git commit -m "fast forward模式测试"
[dev 8f4b73f] fast forward模式测试
1 file changed, 2 insertions(+)
- 切换到master分支
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 6 commits.
(use "git push" to publish your local commits)
- fast forward模式合并分支dev
$ git merge -m "fast forward合并" dev
Merge made by the 'recursive' strategy.
readme.txt | 2 ++
1 file changed, 2 insertions(+)
- 删除分支dev
$ git branch -d dev
Deleted branch dev (was 8f4b73f).
- 使用fast forward模式合并之后查看分支历史
$ git log --graph --pretty=oneline
* 3d1696f7237c130cf5a1ad9773ffbee51be3262a (HEAD -> master) fast forward合并
|\
| * 8f4b73fed335e05837bf0f9d2f37129fa4b70670 fast forward模式测试
* | 4557c42347c9e5349977281a525d107542380c6d merge width no-ff
|\ \
| |/
| * 2fc181e173242bd21edad0ad0336f1a0ab0af3e7 add merge
|/
* 14f2011cde83c68cea09d9843b0332fd9a2de052 (tag: v1.0.0) 解决冲突提交
|\
| * e3b6465fec0b0e626465b3a8608d44e6f6a26d82 测试分支冲突1的提交
* | 31fe6069a4abec6c36d1b080b3d33ee909703c54 测试分支冲突master提交
|/
* c2799ed0de7ba38bfaf813e886bffebd8e6ef6cf 提交分支git-study测试
* c8e9e508b22c94e9a15c9493d27017e8040cc2b0 (origin/master) 本地仓库命令总结 及 远程仓库创建学习
* 61500cbb98ea0c92d14d458bf687bbfc4f93793e git仓库
* 7ef25b5b91bd8010def470f54acd074d9bfaeeac 提交GIT学习的markdown文档资料
* 2b66c80c0c48eb14c0d8207775e5d109beb715af 彻底删除test.txt
* 196e901032be6a5d8861796ccfe382ca58c6d4fc 新建测试文件
* a22f5040574758a503a6147f9a4f450bca05a55f 测试撤销修改提交
* ffb306aed8ede0dfe770421cefb8011f5bba3ed1 (tag: v0.0.9) 再次测试git diff提交测试
* 8519ea54c233319819c90718e4f31af573632ba0 git diff 测试提交
* 5cc8766c378c412c3f6f476c57987aadc344f426 测试管理修改提交
:
–no-ff模式合并
- 分支合并之前查看分支历史
$ git log --graph --pretty=oneline
* 3d1696f7237c130cf5a1ad9773ffbee51be3262a (HEAD -> master) fast forward合并
|\
| * 8f4b73fed335e05837bf0f9d2f37129fa4b70670 fast forward模式测试
* | 4557c42347c9e5349977281a525d107542380c6d merge width no-ff
|\ \
| |/
| * 2fc181e173242bd21edad0ad0336f1a0ab0af3e7 add merge
|/
* 14f2011cde83c68cea09d9843b0332fd9a2de052 (tag: v1.0.0) 解决冲突提交
|\
| * e3b6465fec0b0e626465b3a8608d44e6f6a26d82 测试分支冲突1的提交
* | 31fe6069a4abec6c36d1b080b3d33ee909703c54 测试分支冲突master提交
|/
* c2799ed0de7ba38bfaf813e886bffebd8e6ef6cf 提交分支git-study测试
* c8e9e508b22c94e9a15c9493d27017e8040cc2b0 (origin/master) 本地仓库命令总结 及 远程仓库创建学习
* 61500cbb98ea0c92d14d458bf687bbfc4f93793e git仓库
* 7ef25b5b91bd8010def470f54acd074d9bfaeeac 提交GIT学习的markdown文档资料
* 2b66c80c0c48eb14c0d8207775e5d109beb715af 彻底删除test.txt
* 196e901032be6a5d8861796ccfe382ca58c6d4fc 新建测试文件
* a22f5040574758a503a6147f9a4f450bca05a55f 测试撤销修改提交
* ffb306aed8ede0dfe770421cefb8011f5bba3ed1 (tag: v0.0.9) 再次测试git diff提交测试
* 8519ea54c233319819c90718e4f31af573632ba0 git diff 测试提交
* 5cc8766c378c412c3f6f476c57987aadc344f426 测试管理修改提交
:
- 创建并切换分支noff
$ git checkout -b noff
Switched to a new branch 'noff'
- 查看noff文件修改后状态
$ git status
On branch noff
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
- 提交noff分支修改文件
$ git add readme.txt
$ git commit -m "--no-ff模式测试"
[noff 93ecb83] --no-ff模式测试
1 file changed, 2 insertions(+)
- 切换到master分支
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 8 commits.
(use "git push" to publish your local commits)
- 用–no-ff模式合并noff分支
$ git merge --no-ff -m "--no-ff模式合并" noff
Merge made by the 'recursive' strategy.
readme.txt | 2 ++
1 file changed, 2 insertions(+)
- 删除noff分支
$ git branch -d noff
Deleted branch noff (was 93ecb83).
- 分支–no-ff模式合并之后查看历史
$ git log --graph --pretty=oneline
* 118be5d78c46cf4ddc2512b5e8f0f2730b96d456 (HEAD -> master) --no-ff模式合并
|\
| * 93ecb8398c082ef26a0d405cae7e74cbf3dc0644 --no-ff模式测试
|/
* 3d1696f7237c130cf5a1ad9773ffbee51be3262a fast forward合并
|\
| * 8f4b73fed335e05837bf0f9d2f37129fa4b70670 fast forward模式测试
* | 4557c42347c9e5349977281a525d107542380c6d merge width no-ff
|\ \
| |/
| * 2fc181e173242bd21edad0ad0336f1a0ab0af3e7 add merge
|/
* 14f2011cde83c68cea09d9843b0332fd9a2de052 (tag: v1.0.0) 解决冲突提交
|\
| * e3b6465fec0b0e626465b3a8608d44e6f6a26d82 测试分支冲突1的提交
* | 31fe6069a4abec6c36d1b080b3d33ee909703c54 测试分支冲突master提交
|/
* c2799ed0de7ba38bfaf813e886bffebd8e6ef6cf 提交分支git-study测试
* c8e9e508b22c94e9a15c9493d27017e8040cc2b0 (origin/master) 本地仓库命令总结 及 远程仓库创建学习
* 61500cbb98ea0c92d14d458bf687bbfc4f93793e git仓库
总结
- master分支是主要版本分支,必须保持master的稳定;
- 多人合作是都是对dev分支再创建自己的分支,修改自己的分支,在dev合并,最后再合并到稳定版本的master分支;
- –no-ff模式合并会保留分支历史信息,fast forward模式合并会丢失分支历史信息(在分支删除后),本人这里可能是操作失误,导致都留下了。不清楚的请看廖雪峰大神的分支管理策略!
- 合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。(廖大神的该章小结)
- 不管是我的操作失误还是什么,总之采用–no-ff模式能够留下分支合并的信息,这样有利于后期我们查询。
其他
QQ交流群: 264303060