天天看點

sourcetree推送失敗_sourceTree“重置送出”和“送出復原”的差別

相信用過sourceTree的夥伴們都認識這兩,但是不一定用過這兩個功能,甚至是不能很好的把握它兩的差別,根據自己最近親身測試,總算是能小小的總結一下了

sourcetree推送失敗_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->偏好設定->通用->勾上“允許強制推送”)

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權限

sourcetree推送失敗_sourceTree“重置送出”和“送出復原”的差別
2.建立其它分支,将項目push到建立的分支上,後期再進行merge

(1)建立分支

git branch 分支名 (2)切換分支

git checkout 分支名 (3)進行項目上傳

git add .

git commit -m "送出的資訊"

git remote add origin 遠端倉庫位址

git push -u origin 分支名