美文网首页iOS Developer
SourceTree(Git)回滚(reset)历史版本

SourceTree(Git)回滚(reset)历史版本

作者: GGRay | 来源:发表于2018-04-28 13:56 被阅读585次

    这里只讨论想利用SourceTree回到某个历史版本,并且别人已经合并【merger】了你的代码,而你可能以后还需要这些代码,这种蛋疼的特殊情况,怎么办?
    关于SourceTree的reset和revert soft hard等常规操作和区别 这里不做赘述。
    ok,Lets go:

    第一步:首先把你最新的代码备份一份(如果你还需要这些代码的话 可以不管pods的相关文件 如果你没有更改pods的话 不需要可以不备份 如果备份了 记得标记为:最新代码)【这些代码是指:你回滚到某一节点之后,又commit的代码】;

    第二步: SourceTree选中要回滚到的节点 右键 重置到这次提交 强行合并 ;

    第三步:【关键】这个时候,SourceTree会提示你本地有拉取,而且你push也推送不上去,除非你 git push -f (强制推送),但是这样无济于事,因为别人合并了你的代码了,再合并,还是会出现原来你不想要的代码! ok !!!!!这个时候你需要:不要拉取,直接找到你的项目,把你的项目copy一份出来(可以不管pods的相关文件 如果你没有更改pods的话 这时候这个项目 就是你想回到的状态 标记为:要回滚到的代码),ok;

    第四步:拉取,拉取之后 你的SourceTree应该是 无提交 无拉取 无推送 的三无状态 说白了 就是回到了你回滚之前的状态,ok !!!! 这时候,你找到你的项目目录,直接把刚才copy出来的文件 直接来进来 直接替换掉现在的项目文件!(还是那句话 pods相关文件没动的话 不需要替换) ;

    第五步:ok,这个时候,你就有很多本地更改需要提交了, commit, push 这时候 别人再合并你的分支,就OK了,别人的代码没动,你的代码回归到了某一个节点的代码!

    如果第一步你不需要保存最新的代码,已经大功告成了!! 如果你日后还需要最新的代码,就同样的道理:

    第六步:把你第一步备份的代码,替换你现在的代码,然后commit 然后push 这样你的代码就又回来了!

    这篇文章着重于自己记录,怕日后遇到这种特殊情况,比如临时上架了发现不能上某个功能,而可能过两天又需要上,功能逻辑相对复杂,不好删了再写,就只能这样了。

    如果大家有不清楚的地方 , 可以找我私聊!

    相关文章

      网友评论

      • ikonon:帮了大忙,谢谢:joy:
        GGRay:能帮到就好 我写的不清楚

      本文标题:SourceTree(Git)回滚(reset)历史版本

      本文链接:https://www.haomeiwen.com/subject/dirglftx.html