Backgroud:

公司要求每个版本的git commit都要发CR,然而CR的机制是会将同一个branch的全都交上去。然而我修改的两个feature忘记切换branch了。

git log显示

pick 3894321 upload NAC folder setting  #A
pick 4d13523 auto sync to prod          #B
pick c29f76c auto sync to prod          #B
pick f8fe23c 1.split select realm and fee definition 2.fill all countries 3.add select label 4.filter 'NG' 5.delete id in option         #B
pick 7a0be73 1.sort fee definition by version 2.get realm select according response realm attributes                        #B
pick 9bc65cb pray for approvals         #B
pick a1d119b pray for last version      #B
pick 729769e upload NAC folder setting  #A
pick bec1592 little fix about var name  #B

然后就杯具了

请教我当时来的二面大哥,解决了问题

Solution:

1.先拆出分支

git checkout -b tmp

2.当前的log

git log
commit bec159267320a65624ac0ce29a068a34ad10fa96 (HEAD -> tmp, settingFolder)
Author: yujzhou <yujzhou@x.com>
Date:   Fri Jul 5 15:09:27 2019 +0800

    little fix about var name

commit 729769e0a0b3b992f13ae3cab07b423fe9f4edb3
Author: yujzhou <yujzhou@x.com>
Date:   Fri Jul 5 15:00:50 2019 +0800

    upload NAC folder setting

commit a1d119b90e4ba2904defca2bf7d41dd27a64a6df
Author: yujzhou <yujzhou@x.com>
Date:   Wed Jul 3 18:17:43 2019 +0800

    pray for last version

commit 9bc65cbd9aef7fb5a4de28229556ee0f3cc164e5
Author: yujzhou <yujzhou@x.com>
Date:   Wed Jul 3 16:20:04 2019 +0800

    pray for approvals

commit 7a0be738dc877fd2415d9cbecb92d01a1f0f5e33
Author: yujzhou <yujzhou@x.com>
Date:   Wed Jul 3 14:17:09 2019 +0800

    1.sort fee definition by version
    2.get realm select according response realm attributes

commit f8fe23c9ace599580b11c685fc5a2ffc425e1243
Author: yujzhou <yujzhou@x.com>
Date:   Wed Jul 3 11:25:57 2019 +0800

    1.split select realm and fee definition
    2.fill all countries
    3.add select label
    4.filter 'NG'
    5.delete id in option

commit c29f76c164d71776d4387b1d0b834f3aa33f6e1b
Author: yujzhou <yujzhou@x.com>
Date:   Mon Jul 1 19:37:17 2019 +0800

    auto sync to prod

commit 4d135238f72fe3f7738be0979b284b4b5804f1b1
Author: yujzhou <yujzhou@x.com>
Date:   Mon Jul 1 18:29:57 2019 +0800

    auto sync to prod
    
    cr https://code.amazon.com/reviews/CR-10216273

commit 3894321e2303ffb9a09ba7bf47d8be067f289e6e (origin/settingFolder)
Author: yujzhou <yujzhou@x.com>
Date:   Fri Jun 28 16:42:12 2019 +0800

    upload NAC folder setting
    
    cr https://code.amazon.com/reviews/CR-10118892

commit 4076a0bc86cbd57630f2f3e323c2d36ac448b266 (origin/mainline, origin/HEAD, mainline)

3.修改base

 git rebase -i 4076a0bc86cbd57630f2f3e323c2d36ac448b266

调整顺序

变为

pick 3894321 upload NAC folder setting
s 729769e upload NAC folder setting
pick 4d13523 auto sync to prod
s c29f76c auto sync to prod
s f8fe23c 1.split select realm and fee definition 2.fill all countries 3.add select label 4.filter 'NG' 5.delete id in option
s 7a0be73 1.sort fee definition by version 2.get realm select according response realm attributes
s 9bc65cb pray for approvals
s a1d119b pray for last version
s bec1592 little fix about var name

4.显示log变为

 git log
commit 4367d1f096d6aa2820918df2595afa980b16ca7e (HEAD -> tmp)
Author: yujzhou <yujzhou@x.com>
Date:   Mon Jul 1 18:29:57 2019 +0800

    support fee defintion auto fill
    
    cr https://code.amazon.com/reviews/CR-10216273

commit ff8b9ba14ee453983791f4e9d82f950589723056
Author: yujzhou <yujzhou@x.com>
Date:   Fri Jun 28 16:42:12 2019 +0800

    upload NAC folder setting
    
    cr https://code.amazon.com/reviews/CR-10118892

commit 4076a0bc86cbd57630f2f3e323c2d36ac448b266 (origin/mainline, origin/HEAD, mainline)

(可选:再执行这个操作,修改commit注释内容)

5.再拆一个分支

git checkout -b uploadFolder

6.

 git log
commit 7d18fd815577f04fbe9f62531fd44ca2e314be98 (HEAD -> tmp)
Author: yujzhou <yujzhou@x.com>
Date:   Fri Jun 28 16:42:12 2019 +0800

    upload NAC folder setting
    
    cr https://code.amazon.com/reviews/CR-10118892

commit 7323697277e565634214e083d517838f3a9502f2
Author: yujzhou <yujzhou@x.com>
Date:   Mon Jul 1 18:29:57 2019 +0800

    support fee defintion auto fill
    
    cr https://code.amazon.com/reviews/CR-10216273

commit 4076a0bc86cbd57630f2f3e323c2d36ac448b266 (origin/mainline, origin/HEAD, mainline)

7.既然要提交次早的,就将最新的reset删除就好啦

git reset --hard 7323697277e565634214e083d517838f3a9502f2

提CR

8.切回分支

git checkout tmp
 git log
commit 7d18fd815577f04fbe9f62531fd44ca2e314be98 (HEAD -> tmp)
Author: yujzhou <yujzhou@x.com>
Date:   Fri Jun 28 16:42:12 2019 +0800

    upload NAC folder setting
    
    cr https://code.amazon.com/reviews/CR-10118892

commit 7323697277e565634214e083d517838f3a9502f2 (uploadFolder)
Author: yujzhou <yujzhou@x.com>
Date:   Mon Jul 1 18:29:57 2019 +0800

    support fee defintion auto fill
    
    cr https://code.amazon.com/reviews/CR-10216273

commit 4076a0bc86cbd57630f2f3e323c2d36ac448b266 (origin/mainline, origin/HEAD, mainline)

9.既然这个分支是删除次新的 那么将对应的pick那行删除即可

git rebase -i 4076a0bc86cbd57630f2f3e323c2d36ac448b266

提CR 完事~~