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的這三個版本號再合併過來,只需要再使用第二種合併命令就可以了。