• git 工具的使用总结(6)-提交合并处理


    1.撤消修改

    1)revert:反转提交,它就是把你的一个提交先撤消掉,但是,它跟reset不同的是,你的这次这小会留下记录,这样在你下次需要的时候,可以通过这个节点把撤消的提交恢复

    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git pull
    Already up-to-date.
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ vim 1.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git add .
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git commit -m "test 1"
    [work 4f3ab02] test 1
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 100644 1.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ vim 2.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git add .
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git commit -m "test 2"
    [work c7bc7ce] test 2
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 100644 2.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git log -2
    commit c7bc7ced616685852b0b225042f34c038979ade4
    Author: zhangshuli <zhangshuli@vanzotec.cn>
    Date:   Mon Mar 2 16:14:31 2015 +0000
    
        test 2
        
        Change-Id: I68bbc606ae343b33f53747745db9f2a5ccf1bc82
    
    commit 4f3ab0254090a54a2307b14d620f83a744d879b0
    Author: zhangshuli <zhangshuli@vanzotec.cn>
    Date:   Mon Mar 2 16:14:04 2015 +0000
    
        test 1
        
        Change-Id: I233ee74674f6e3f054c5abe0622e85efcc83b563
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git revert 4f3ab0254090a54a2307b14d620f83a744d879b0
    Finished one revert.
    [work ab43af6] Revert "test 1"
     1 files changed, 0 insertions(+), 1 deletions(-)
     delete mode 100644 1.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git log -3
    commit ab43af6847f07d08a6c14cb211ce4007782202f5
    Author: zhangshuli <zhangshuli@vanzotec.cn>
    Date:   Mon Mar 2 16:14:50 2015 +0000
    
        Revert "test 1"
        
        This reverts commit 4f3ab0254090a54a2307b14d620f83a744d879b0.
    
    commit c7bc7ced616685852b0b225042f34c038979ade4
    Author: zhangshuli <zhangshuli@vanzotec.cn>
    Date:   Mon Mar 2 16:14:31 2015 +0000
    
        test 2
        
        Change-Id: I68bbc606ae343b33f53747745db9f2a5ccf1bc82
    
    commit 4f3ab0254090a54a2307b14d620f83a744d879b0
    Author: zhangshuli <zhangshuli@vanzotec.cn>
    Date:   Mon Mar 2 16:14:04 2015 +0000
    
        test 1
        
        Change-Id: I233ee74674f6e3f054c5abe0622e85efcc83b563
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ ls
    2.txt  AndroidManifest.xml  Android.mk  apptests  CleanSpec.mk  ext  MODULE_LICENSE_APACHE2  NOTICE  proguard.flags  res  src
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ vim 3.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git add .
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git commit -m "test 3"
    [work f4c241d] test 3
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 100644 3.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git log -5
    commit f4c241ddb521ad85605687734addaac3887c4a4e
    Author: zhangshuli <zhangshuli@vanzotec.cn>
    Date:   Mon Mar 2 16:15:54 2015 +0000
    
        test 3
        
        Change-Id: I0bfde2e50381d2dc1b2717c0d2d839278f1c5fc6
    
    commit ab43af6847f07d08a6c14cb211ce4007782202f5
    Author: zhangshuli <zhangshuli@vanzotec.cn>
    Date:   Mon Mar 2 16:14:50 2015 +0000
    
        Revert "test 1"
        
        This reverts commit 4f3ab0254090a54a2307b14d620f83a744d879b0.
    
    commit c7bc7ced616685852b0b225042f34c038979ade4
    Author: zhangshuli <zhangshuli@vanzotec.cn>
    Date:   Mon Mar 2 16:14:31 2015 +0000
    
        test 2
        
        Change-Id: I68bbc606ae343b33f53747745db9f2a5ccf1bc82
    
    commit 4f3ab0254090a54a2307b14d620f83a744d879b0
    Author: zhangshuli <zhangshuli@vanzotec.cn>
    Date:   Mon Mar 2 16:14:04 2015 +0000
    
        test 1
        
        Change-Id: I233ee74674f6e3f054c5abe0622e85efcc83b563
    
    commit 7cbfacb7c742ef3afbcb50e56820def5d5d2af6f
    Author: wangjianhua <wangjianhua@vanzotec.cn>
    Date:   Tue Feb 10 18:36:49 2015 +0800
    
        modify hd action mode image of Mms
        
        Change-Id: I1856c0554d1a8824c45e547df194b4f9865f2473
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ ls
    2.txt  3.txt  AndroidManifest.xml  Android.mk  apptests  CleanSpec.mk  ext  MODULE_LICENSE_APACHE2  NOTICE  proguard.flags  res  src
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git revert ab43af6847f07d08a6c14cb211ce4007782202f5
    Finished one revert.
    [work 153148e] Revert "Revert "test 1""
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 100644 1.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ ls
    1.txt  2.txt  3.txt  AndroidManifest.xml  Android.mk  apptests  CleanSpec.mk  ext  MODULE_LICENSE_APACHE2  NOTICE  proguard.flags  res  src
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ 

    如果你想把多次的提交转化为一次反转,可以添加参数-n

    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git revert -n c7bc7ced616685852b0b225042f34c038979ade4
    Finished one revert.
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git st 
    # On branch work
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #    deleted:    2.txt
    #
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git revert -n f4c241ddb521ad85605687734addaac3887c4a4e
    Finished one revert.
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git st 
    # On branch work
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #    deleted:    2.txt
    #    deleted:    3.txt
    #
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git commit -m "revert test1 and test2"
    [work 69b0c2e] revert test1 and test2
     2 files changed, 0 insertions(+), 2 deletions(-)
     delete mode 100644 2.txt
     delete mode 100644 3.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git log -1
    commit 69b0c2e45258fcf33203f25444d562a9470092d7
    Author: zhangshuli <zhangshuli@vanzotec.cn>
    Date:   Mon Mar 2 16:19:43 2015 +0000
    
        revert test1 and test2
        
        Change-Id: I6563031fe059a2c5bdf3e6bfa5278849ee0e9964
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ ls
    1.txt  AndroidManifest.xml  Android.mk  apptests  CleanSpec.mk  ext  MODULE_LICENSE_APACHE2  NOTICE  proguard.flags  res  src
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git revert 69b0c2e45258fcf33203f25444d562a9470092d7
    Finished one revert.
    [work bbe5a74] Revert "revert test1 and test2"
     2 files changed, 2 insertions(+), 0 deletions(-)
     create mode 100644 2.txt
     create mode 100644 3.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ ls
    1.txt  2.txt  3.txt  AndroidManifest.xml  Android.mk  apptests  CleanSpec.mk  ext  MODULE_LICENSE_APACHE2  NOTICE  proguard.flags  res  src
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ vim 2.txt 
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$

    对于一次记录只能进行一次revert,多次连续执行是没有意义的,因为revert一次以后,这次提交的内容已经不存了

    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ vim 4.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git add .
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git commit -m "test4"
    [work 2bc646d] test4
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 100644 4.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git log -1
    commit 2bc646d2f078f3c03ab5352a13a057fccc83621d
    Author: zhangshuli <zhangshuli@vanzotec.cn>
    Date:   Mon Mar 2 16:21:50 2015 +0000
    
        test4
        
        Change-Id: Ia7dff511d77e566a3920aa4fe29331afd80ed215
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git revert 2bc646d2f078f3c03ab5352a13a057fccc83621d
    Finished one revert.
    [work 85ceb81] Revert "test4"
     1 files changed, 0 insertions(+), 1 deletions(-)
     delete mode 100644 4.txt
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ ls
    1.txt  2.txt  3.txt  AndroidManifest.xml  Android.mk  apptests  CleanSpec.mk  ext  MODULE_LICENSE_APACHE2  NOTICE  proguard.flags  res  src
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git revert 2bc646d2f078f3c03ab5352a13a057fccc83621d
    Finished one revert.
    # On branch work
    nothing to commit (working directory clean)

    2)历史记录重排序

    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git log --pretty=oneline -5
    c8edf2bebf0bea0906a09d277ad0f1007a791e36 test5
    35a249e2cc2acf11a078e28381aee80f602aa64a Revert "test4"
    2bc646d2f078f3c03ab5352a13a057fccc83621d test4
    bbe5a74e8e0fa135577b1e5dd9554d9e49c90caf Revert "revert test1 and test2"
    69b0c2e45258fcf33203f25444d562a9470092d7 revert test1 and test2
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git rebase -i 69b0c2e45258fcf33203f25444d562a9470092d7
    Successfully rebased and updated refs/heads/work.
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git log --pretty=oneline -5
    a3dfb66a35509f72ed9606a3614ed0b660c082d0 Revert "revert test1 and test2"
    3b850bebefe0b6005845d534875e2d198a879af9 test5
    47e439085f53260c1e0d88a6c17370d0a8437aa6 Revert "test4"
    bcf6a96ef4dba4ee819ce357864911aa60458ae7 test4
    69b0c2e45258fcf33203f25444d562a9470092d7 revert test1 and test2
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$

    执行了git rebase -i 69b0c2e45258fcf33203f25444d562a9470092d7  命令以后,你会发现如下界面

      1 pick bcf6a96 test4
      2 pick 47e4390 Revert "test4"
      3 pick 3b850be test5
      4 pick a3dfb66 Revert "revert test1 and test2"
      5 
      6 # Rebase 69b0c2e..a3dfb66 onto 69b0c2e
      7 #
      8 # Commands:
      9 #  p, pick = use commit
     10 #  r, reword = use commit, but edit the commit message
     11 #  e, edit = use commit, but stop for amending
     12 #  s, squash = use commit, but meld into previous commit
     13 #  f, fixup = like "squash", but discard this commit's log message
     14 #
     15 # If you remove a line here THAT COMMIT WILL BE LOST.
     16 # However, if you remove everything, the rebase will be aborted.
     17 #

    你更改pick的顺序,就决定了历史记录的顺序

    3)多个提交压合一个

    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git log --pretty=oneline -3
    f10a4b93c8bbc834b644295ea2341cd6690bf954 test5
    954ba575dc29decdb4642d83421dcf3c7cfe2192 Revert "test4"
    bcf6a96ef4dba4ee819ce357864911aa60458ae7 test4
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git rebase -i bcf6a96ef4dba4ee819ce357864911aa60458ae7
    [detached HEAD 20ac46d] Revert "test4"
     4 files changed, 3 insertions(+), 1 deletions(-)
     create mode 100644 2.txt
     create mode 100644 3.txt
     delete mode 100644 4.txt
     create mode 100644 branch.txt
    Successfully rebased and updated refs/heads/work.
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git log --pretty=oneline -3
    20ac46dd92113d8c40b33cb91402f6025551bef2 Revert "test4"
    bcf6a96ef4dba4ee819ce357864911aa60458ae7 test4
    69b0c2e45258fcf33203f25444d562a9470092d7 revert test1 and test2
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git log --stat 20ac46dd92113d8c40b33cb91402f6025551bef2
    commit 20ac46dd92113d8c40b33cb91402f6025551bef2
    Author: zhangshuli <zhangshuli@vanzotec.cn>
    Date:   Mon Mar 2 16:22:06 2015 +0000
    
        Revert "test4"
        
        This reverts commit 2bc646d2f078f3c03ab5352a13a057fccc83621d.
        
        Revert "revert test1 and test2"
        
        This reverts commit 69b0c2e45258fcf33203f25444d562a9470092d7.
        
        test5
        
        Change-Id: I09af8b31eb2d07cba0949042e06e09b85d597b7d
    
     2.txt      |    1 +
     3.txt      |    1 +
     4.txt      |    1 -
     branch.txt |    1 +
     4 files changed, 3 insertions(+), 1 deletions(-)

    这个其实就是在修改历史记录的基础上进行了第二次修改,如下

      1 pick f4c241d test 3
      2 pick 99298bc revert test1 and test2
      3 pick 3e92336 test4
      4 pick dd6f1ea Revert "test4"
      5 
      6 # Rebase ab43af6..dd6f1ea onto ab43af6
      7 #
      8 # Commands:
      9 #  p, pick = use commit
     10 #  r, reword = use commit, but edit the commit message
     11 #  e, edit = use commit, but stop for amending
     12 #  s, squash = use commit, but meld into previous commit
     13 #  f, fixup = like "squash", but discard this commit's log message
     14 #
     15 # If you remove a line here THAT COMMIT WILL BE LOST.
     16 # However, if you remove everything, the rebase will be aborted.
     17 #

    修改

      1 pick f4c241d test 3
      2 squash 3e92336 test4
      3 pick 99298bc revert test1 and test2
      4 pick dd6f1ea Revert "test4"
      5 
      6 # Rebase ab43af6..dd6f1ea onto ab43af6
      7 #
      8 # Commands:
      9 #  p, pick = use commit
     10 #  r, reword = use commit, but edit the commit message
     11 #  e, edit = use commit, but stop for amending
     12 #  s, squash = use commit, but meld into previous commit
     13 #  f, fixup = like "squash", but discard this commit's log message
     14 #
     15 # If you remove a line here THAT COMMIT WILL BE LOST.
     16 # However, if you remove everything, the rebase will be aborted.
     17 #

    结果

    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git log --pretty=oneline -5
    dd6f1ea300a8314c76fae3854291ace572f28391 Revert "test4"
    3e92336ac3044d64b17c424eba01682234b14ff4 test4
    99298bc028c9f9e45cc54302a371c729c8d4dd57 revert test1 and test2
    f4c241ddb521ad85605687734addaac3887c4a4e test 3
    ab43af6847f07d08a6c14cb211ce4007782202f5 Revert "test 1"
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git rebase -i ab43af6847f07d08a6c14cb211ce4007782202f5
    [detached HEAD c294d73] test 3
     2 files changed, 2 insertions(+), 0 deletions(-)
     create mode 100644 3.txt
     create mode 100644 4.txt
    Successfully rebased and updated refs/heads/work.
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ git log --pretty=oneline -5
    d69bd5c2f63bf3101816263c5325507010d6f8cc Revert "test4"
    35942e8e4ef640804ada6e19bc8f62364892333a revert test1 and test2
    c294d73f0d977b02686712b935572c486c478201 test 3
    ab43af6847f07d08a6c14cb211ce4007782202f5 Revert "test 1"
    c7bc7ced616685852b0b225042f34c038979ade4 test 2
    zhangshuli@zhangshuli-MS-7817:~/PROJECT/PROJECT_V5/32_kk_qhd_k25/packages/apps/Mms$ 

    4)一个提交分为多个提交

    这个具体有什么作用还不清出,以后遇到了再说吧

  • 相关阅读:
    机器学习经验帖
    C++面试问题收集
    js事件
    js数据类型
    js鼠标拖拽事件
    BOM事件浏览器滚动条
    IIS发布.netcore需要安装dotnethosting
    电脑访问小米路由器
    win11设置默认浏览器(适用于「按链接」和「按文件类型」,可解决从阿里旺旺中打开时用edge打开页面的问题)
    uniapp自定义基座或发行中出现SDK版本不匹配弹框处理
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_tool_150302174.html
Copyright © 2020-2023  润新知