• what's is the different between git rebase and git meger.


    1. build a environment of the test

    first of all . create the branch like below

    D:\gitTest\Download4Http>git branch
      Bensonhe-dev
      change-branch
      dev
      master
      merge-branch
    * rebase-branch

    image

    then change something on change-branch and commit it as node “changeA” .

    and change  it again and commit as node “changB”

    the same way for the merge-branch and rebase-branch

    D:\gitTest\Download4Http>git branch
      Bensonhe-dev
      change-branch
      dev
      master
      merge-branch
    * rebase-branch

    D:\gitTest\Download4Http>git checkout change-branch
    Switched to branch 'change-branch'

    D:\gitTest\Download4Http>git commit -a -m "changeA"
    [change-branch 0672bb4] changeA
    1 file changed, 1 insertion(+), 1 deletion(-)

    D:\gitTest\Download4Http>git commit -a -m "changeB"
    [change-branch 97d5ac4] changeB
    1 file changed, 1 insertion(+), 1 deletion(-)

    D:\gitTest\Download4Http>git checkout merge-branch
    Switched to branch 'merge-branch'

    D:\gitTest\Download4Http>git commit -a -m"mergeA"
    [merge-branch d29ddb1] mergeA
    1 file changed, 2 insertions(+), 1 deletion(-)

    D:\gitTest\Download4Http>git commit -a -m"mergeB"
    [merge-branch 76d4732] mergeB
    1 file changed, 1 insertion(+), 1 deletion(-)

    D:\gitTest\Download4Http>git checkout rebase-branch
    Switched to branch 'rebase-branch'

    D:\gitTest\Download4Http>git commit -a -m "rebaseA"
    [rebase-branch c213fec] rebaseA
    1 file changed, 2 insertions(+), 1 deletion(-)

    D:\gitTest\Download4Http>git commit -a -m "rebaseB"
    [rebase-branch 6cd92c2] rebaseB
    1 file changed, 1 insertion(+), 1 deletion(-)

    after the finish. the node tree should be like  this

    image

    2. Test for it

    change branch on the rebase-branch

    use the command git rebase change-branch. and show the log

    image

    you can find have 4 commit nodes. the branch tree like this

    image

    use the command git merge change-branch. and show the log

    image

    you can find the git will create a new commit node . total have 5 commit nodes. the branch tree like this

    image

    3. when should I use git rebase?  when should I use git merge?

    below  show the how to fix the 2 conflict when you merge different branch

    D:\gitTest\Download4Http>git branch
      Bensonhe-dev
      change-branch
      dev
      master
    * merge-branch
      rebase-branch

    D:\gitTest\Download4Http>git checkout change-branch
    Switched to branch 'change-branch'

    D:\gitTest\Download4Http>git commit -a -m "changeConflictA"
    [change-branch d3b8845] changeConflictA
    1 file changed, 1 insertion(+), 1 deletion(-)

    D:\gitTest\Download4Http>git commit -a -m "changeConflictB"
    [change-branch 76b70ba] changeConflictB
    1 file changed, 1 insertion(+), 1 deletion(-)

    D:\gitTest\Download4Http>git checkout merge-branch
    Switched to branch 'merge-branch'

    D:\gitTest\Download4Http>git commit -a -m "mergeConflictA"
    [merge-branch 4ad0e13] mergeConflictA
    1 file changed, 1 insertion(+), 1 deletion(-)

    D:\gitTest\Download4Http>git commit -a -m "mergeConflictB"
    [merge-branch 5c1a613] mergeConflictB
    1 file changed, 1 insertion(+), 1 deletion(-)

    D:\gitTest\Download4Http>git merge change-change
    fatal: 'change-change' does not point to a commit

    D:\gitTest\Download4Http>git merge change-branch
    Auto-merging README.md
    CONFLICT (content): Merge conflict in README.md
    Automatic merge failed; fix conflicts and then commit the result.

    D:\gitTest\Download4Http>git commit -a -m "fix the merge Conflict"
    [merge-branch d490c8b] fix the merge Conflict

    D:\gitTest\Download4Http>git merge change-branch
    Already up-to-date.

    below  show the how to fix the 2 conflict when you rebase different branch

    the rebase if  have conflict is default with merge.

    use reabase ,the git will apply commit node one by one.like this

    image

    if the git find conflict . it will skip branch (no branch)  for your merge the changes

     image

    if you merge one by yourself . use git add to add index for the changes.and use git rebase – –continue to continue rebase

    the git will aplly next node .

    image

    until you finish the all conflict

    image

    the different from git merge.  the git merge will apply all the changes  by one time.

    so I think if have many commit nodes . you had better use git merge.

    if only few commit node .you had better use the git rebase. it can loss the commit nodes.it is better for you to manager the branch

    if you have any question .you can send email to me .my email adress is qing878@gmail.com ,the skype is qing878

    thanks

    Benson

    文章是我原创,用英文写只为了提高下英语水平,水平很烂勿喷啊,呵呵,欢迎交流,我标明啊,编者别删拉

  • 相关阅读:
    Vue
    Vue
    Vue
    Vue
    Vue
    Vue
    Vue
    Vue
    Vue
    建立索引该如何选取字段
  • 原文地址:https://www.cnblogs.com/springsource/p/2828719.html
Copyright © 2020-2023  润新知