Heim > Fragen und Antworten > Hauptteil
1.deploy分支是生产环境的分支,master是主开发分支。
2.deploy分支有几个文件配置和master分支的不一样,通常都是将master分支合并到deploy分支,并不会改变deploy分支下的配置文件信息。
3.不小心把deploy分支合并进了master分支,导致master分支下的配置文件被改成了deploy分支下的,并且做了push,远程master分支下的配置文件也成deploy下的了。
4.改回了master分支下的配置文件,重新做了push,但是现在不敢往deploy分支合并了,因为担心master分支下的配置会替换掉deploy下的。
现在想恢复master分支之前的版本,以及远程仓库内的版本。该怎么做?
某草草2017-05-02 09:52:50
其实这很容易的,楼主可以先在本地进行回退操作:
通过提交日志找回之前master的状态对应的哈希值
git log
复制其哈希值,假如是664d6cf35a7。
然后时光穿梭,回到之前的那个状态
git reset --hard 664d6cf35a7
回退好之后,删除远程的master分支:
git push origin --delete master
如果删除不了的话,可以先在远程将默认分支设置为另一个分支,如deploy。如果楼主的远程仓库在github上的话,可以点击相应仓库的setting->branches-.default branches,修改即可。
然后再运行上面的命令删掉远程master分支。
删除之后,现在就可以重新推送master分支了,这样会在远程仓库重新建立一个master分支。推送好之后,再将远程的默认仓库重新修改为master。
现在这个状态基本上就和以前一样了。
大家讲道理2017-05-02 09:52:50
回退本地分支 > 删除远程分支 > 推送本地分支 (也就是创建一个新的远程分支)
不过这种方法对 master 这类的保护分支并不适用,可以用下面的方法:
回退本地分支 > 强行推送本地分支 (强制推送以覆盖远程分支内容)