相信用過sourceTree的夥伴們都認識這兩,但是不一定用過這兩個功能,甚至是不能很好的把握它兩的區別,根據自己最近親身測試,總算是能小小的總結一下了
首先這兒假如,歷史版本已經出現了1、2、3、4、5、6、7、8、9,當前的版本是9,講述執行上面兩種操作,分別會有什麼效果
1.提交回滾
假如我選中6,執行“提交回滾”之後,你會發現7,8,9的歷史操作還在,只是將6的操作還原了,這時候需要注意的是7、8、9的操作會引起提交回滾6的時候產生衝突
2.將master重置到這次版本
假如我選中6,執行“將master重置到這次版本”之後,你會發現這個時候歷史列表顯示落後4個版本,而且顯示出了6中所有的檔案變更,相當於回到當時準備提交的狀態,這個時候如果你去推送是會報錯的,顯示的意思就是有要拉取的,但是如果你去拉取的話,你會發現又還原了,又回覆重置之前,那怎麼辦,肯定是隻能推送了,通過查閱資料,才知道這個時候需要修改sourceTree的設定,才能執行強制推送
注意::在這裡我建議需要的時候開啟強制推送,用完就關閉(開啟方法:sourceTree->偏好設定->通用->勾上“允許強制推送”)
別以為這樣就夠了,如果你在設定之後強制推送還是顯示失敗,顯示資訊如下:
! [remote rejected] master -> master (pre-receive hook declined)
最後查閱資料才知道git push不上去的原因在於所push的分支許可權為protected,只有專案的管理員或者專案的管理員指派的具有相應許可權的人才能進行push,而且預設情況下【master】分支是處於被保護狀態下的,要進行專案的push,有如下兩種方法:
1.將所要push的內容所在的分支的protected許可權關閉
(1)進入所在專案的settings,點選進入Protected branches,點選unprotected將master分支的許可權改變,即關閉master的protected許可權
2.新建其它分支,將專案push到新建的分支上,後期再進行merge
(1)新建分支
git branch 分支名 (2)切換分支
git checkout 分支名 (3)進行專案上傳
git add .
git commit -m "提交的資訊"
git remote add origin 遠端倉庫地址
git push -u origin 分支名