這里只討論想利用SourceTree回到某個(gè)歷史版本犯祠,并且別人已經(jīng)合并【merger】了你的代碼酌呆,而你可能以后還需要這些代碼,這種蛋疼的特殊情況隙袁,怎么辦菩收?
關(guān)于SourceTree的reset和revert soft hard等常規(guī)操作和區(qū)別 這里不做贅述。
ok娜饵,Lets go:
第一步:首先把你最新的代碼備份一份(如果你還需要這些代碼的話 可以不管pods的相關(guān)文件 如果你沒有更改pods的話 不需要可以不備份 如果備份了 記得標(biāo)記為:最新代碼)【這些代碼是指:你回滾到某一節(jié)點(diǎn)之后,又commit的代碼】拳亿;
第二步: SourceTree選中要回滾到的節(jié)點(diǎn) 右鍵 重置到這次提交 強(qiáng)行合并 ;
第三步:【關(guān)鍵】這個(gè)時(shí)候肺魁,SourceTree會提示你本地有拉取隔节,而且你push也推送不上去,除非你 git push -f (強(qiáng)制推送)瘾晃,但是這樣無濟(jì)于事,因?yàn)閯e人合并了你的代碼了酗捌,再合并涌哲,還是會出現(xiàn)原來你不想要的代碼阀圾! ok 3鹾妗7指8准簟!杏节!這個(gè)時(shí)候你需要:不要拉取奋渔,直接找到你的項(xiàng)目,把你的項(xiàng)目copy一份出來(可以不管pods的相關(guān)文件 如果你沒有更改pods的話 這時(shí)候這個(gè)項(xiàng)目 就是你想回到的狀態(tài) 標(biāo)記為:要回滾到的代碼)撑蒜,ok座菠;
第四步:拉取,拉取之后 你的SourceTree應(yīng)該是 無提交 無拉取 無推送 的三無狀態(tài) 說白了 就是回到了你回滾之前的狀態(tài)份企,ok K局尽=嫡!激才! 這時(shí)候瘸恼,你找到你的項(xiàng)目目錄,直接把剛才copy出來的文件 直接來進(jìn)來 直接替換掉現(xiàn)在的項(xiàng)目文件G蚶埂(還是那句話 pods相關(guān)文件沒動(dòng)的話 不需要替換) ;
第五步:ok坎炼,這個(gè)時(shí)候檩淋,你就有很多本地更改需要提交了抢肛, commit捡絮, push 這時(shí)候 別人再合并你的分支,就OK了,別人的代碼沒動(dòng)鼓拧,你的代碼回歸到了某一個(gè)節(jié)點(diǎn)的代碼!
如果第一步你不需要保存最新的代碼季俩,已經(jīng)大功告成了W米 ! 如果你日后還需要最新的代碼,就同樣的道理:
第六步:把你第一步備份的代碼都哭,替換你現(xiàn)在的代碼,然后commit 然后push 這樣你的代碼就又回來了纱新!
這篇文章著重于自己記錄怒炸,怕日后遇到這種特殊情況毡代,比如臨時(shí)上架了發(fā)現(xiàn)不能上某個(gè)功能教寂,而可能過兩天又需要上执庐,功能邏輯相對復(fù)雜轨淌,不好刪了再寫,就只能這樣了递鹉。
如果大家有不清楚的地方 , 可以找我私聊却盘!