相信用過(guò)sourceTree的伙伴們都認(rèn)識(shí)這兩,但是不一定用過(guò)這兩個(gè)功能,甚至是不能很好的把握它兩的區(qū)別,根據(jù)自己最近親身測(cè)試,總算是能小小的總結(jié)一下了

首先這兒假如,歷史版本已經(jīng)出現(xiàn)了1、2、3、4、5、6、7、8、9,當(dāng)前的版本是9,講述執(zhí)行上面兩種操作,分別會(huì)有什么效果
1.提交回滾
假如我選中6,執(zhí)行“提交回滾”之后,你會(huì)發(fā)現(xiàn)7,8,9的歷史操作還在,只是將6的操作還原了,這時(shí)候需要注意的是7、8、9的操作會(huì)引起提交回滾6的時(shí)候產(chǎn)生沖突
2.將master重置到這次版本
假如我選中6,執(zhí)行“將master重置到這次版本”之后,你會(huì)發(fā)現(xiàn)這個(gè)時(shí)候歷史列表顯示落后4個(gè)版本,而且顯示出了6中所有的文件變更,相當(dāng)于回到當(dāng)時(shí)準(zhǔn)備提交的狀態(tài),這個(gè)時(shí)候如果你去推送是會(huì)報(bào)錯(cuò)的,顯示的意思就是有要拉取的,但是如果你去拉取的話,你會(huì)發(fā)現(xiàn)又還原了,又回復(fù)重置之前,那怎么辦,肯定是只能推送了,通過(guò)查閱資料,才知道這個(gè)時(shí)候需要修改sourceTree的設(shè)置,才能執(zhí)行強(qiáng)制推送
注意::在這里我建議需要的時(shí)候開啟強(qiáng)制推送,用完就關(guān)閉(開啟方法:sourceTree->偏好設(shè)置->通用->勾上“允許強(qiáng)制推送”)

別以為這樣就夠了,如果你在設(shè)置之后強(qiáng)制推送還是顯示失敗,顯示信息如下:
! [remote rejected] master -> master (pre-receive hook declined)
最后查閱資料才知道git push不上去的原因在于所push的分支權(quán)限為protected,只有項(xiàng)目的管理員或者項(xiàng)目的管理員指派的具有相應(yīng)權(quán)限的人才能進(jìn)行push,而且默認(rèn)情況下【master】分支是處于被保護(hù)狀態(tài)下的,要進(jìn)行項(xiàng)目的push,有如下兩種方法:
1.將所要push的內(nèi)容所在的分支的protected權(quán)限關(guān)閉
(1)進(jìn)入所在項(xiàng)目的settings,點(diǎn)擊進(jìn)入Protected branches,點(diǎn)擊unprotected將master分支的權(quán)限改變,即關(guān)閉master的protected權(quán)限

2.新建其它分支,將項(xiàng)目push到新建的分支上,后期再進(jìn)行merge
(1)新建分支
git branch 分支名
(2)切換分支
git checkout 分支名
(3)進(jìn)行項(xiàng)目上傳
git add .
git commit -m "提交的信息"
git remote add origin 遠(yuǎn)程倉(cāng)庫(kù)地址
git push -u origin 分支名