1. 程式人生 > >git merge命令引數--no-ff 與--squash區別

git merge命令引數--no-ff 與--squash區別

前置場景:master分支存在的版本號c2be41、bg25yg、bksij3、4dsbtd,DEV分支存在的版本號c2be41。

操作場景:將master分支整分支合併到DEV分支

1.使用命令:git merge master --no-ff --no-commit
                     git commit -m "mergeLog"
          結果:DEV存在的版本號c2be41、bg25yg、bksij3、4dsbtd、djnsa2。
                    其中bg25yg、bksij3、4dsbtd三個版本號是從master合併過來的,
                    djnsa2版本號是DEV分支提交時產生的


2.使用命令:git merge master --squash --no-commit
                     git commit -m "mergeLog"
          結果:DEV存在的版本號c2be41、djnsa2。
                     djnsa2版本號是DEV分支提交時產生的

命令分析:--no-ff:不使用fast-forward方式合併,保留源分支的commit歷史
                  --squash:使用squash方式合併,把多次分支commit歷史壓縮為一次
                  
擴充套件:如果要撤掉DEV上的本次merge操作,
1.第一種方式的合併,使用命令為:git revert djnsa2 -n -m 3 -m 2 -m 1,
                    但是之後想再將master的這三個版本號合併過來就不可能了,只能對DEV分支的本次revert操作進行git revert命令。
                    
                    
2.第二種方式的合併,使用命令為:git revert djnsa2 -n ,
                    之後想將master的這三個版本號再合併過來,只需要再使用第二種合併命令就可以了。