GIT学习----第十三节:分支管理

学习目的

  1. 区分‘–no-ff普通模式合并’和‘fast forward模式合并’的区别?

fast forward模式合并

  1. 分支合并之前查看分支历史

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ 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仓库
  2. 查看dev分支状态

    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ 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")
  3. 提交dev分支修改文件

    1
    2
    3
    4
    5
    $ git add readme.txt

    $ git commit -m "fast forward模式测试"
    [dev 8f4b73f] fast forward模式测试
    1 file changed, 2 insertions(+)
  4. 切换到master分支

    1
    2
    3
    4
    $ 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)
  5. fast forward模式合并分支dev

    1
    2
    3
    4
    $ git merge -m "fast forward合并" dev
    Merge made by the 'recursive' strategy.
    readme.txt | 2 ++
    1 file changed, 2 insertions(+)
  6. 删除分支dev

    1
    2
    $ git branch -d dev
    Deleted branch dev (was 8f4b73f).
  7. 使用fast forward模式合并之后查看分支历史

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    $ 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模式合并

  1. 分支合并之前查看分支历史

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    $ 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 测试管理修改提交
    :
  2. 创建并切换分支noff

    1
    2
    $ git checkout -b noff
    Switched to a new branch 'noff'
  3. 查看noff文件修改后状态

    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ 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")
  4. 提交noff分支修改文件

    1
    2
    3
    4
    5
    $ git add readme.txt

    $ git commit -m "--no-ff模式测试"
    [noff 93ecb83] --no-ff模式测试
    1 file changed, 2 insertions(+)
  5. 切换到master分支

    1
    2
    3
    4
    $ 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)
  6. 用–no-ff模式合并noff分支

    1
    2
    3
    4
    $ git merge --no-ff -m "--no-ff模式合并" noff
    Merge made by the 'recursive' strategy.
    readme.txt | 2 ++
    1 file changed, 2 insertions(+)
  7. 删除noff分支

    1
    2
    $ git branch -d noff
    Deleted branch noff (was 93ecb83).
  8. 分支–no-ff模式合并之后查看历史

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    $ 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仓库

总结

  1. master分支是主要版本分支,必须保持master的稳定;
  2. 多人合作是都是对dev分支再创建自己的分支,修改自己的分支,在dev合并,最后再合并到稳定版本的master分支;
  3. –no-ff模式合并会保留分支历史信息,fast forward模式合并会丢失分支历史信息(在分支删除后),本人这里可能是操作失误,导致都留下了。不清楚的请看廖雪峰大神的分支管理策略
  4. 合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。(廖大神的该章小结)
  5. 不管是我的操作失误还是什么,总之采用–no-ff模式能够留下分支合并的信息,这样有利于后期我们查询。

其他

QQ交流群: 264303060

QQ交流群

我的博客,欢迎交流!

我的CSDN博客,欢迎交流!

微信小程序专栏

前端笔记专栏

微信小程序实现部分高德地图功能的DEMO下载

微信小程序实现MUI的部分效果的DEMO下载

微信小程序实现MUI的GIT项目地址

微信小程序实例列表

前端笔记列表

游戏列表