今天大意操作,把同事的提交的代码给覆盖了,于是采用了下面的几种解决方法。
- 方法一:
1. 首先还原本地的版本到覆盖的版本,然后强行把还原的版本推送到远程仓库中。
首先在本地进行还原。
git reset --hard a1edaeb37a5
# 然后强制push 到远程仓库 语法:git push -f <remote> <branch>
git push -f git@192.168.1.4:chenfulin5/u-boot_2016.05.git master:master
但是由于git push -f 一个比较危险的操作,一般git把git push -f 这是为默认不能执行。
在.git的config中配置:receive.denyNonFastForwards = true
但是仍然无法强制推送到远程仓库。有可能与receive.denyNonFastForwards = true 配置设置不成功有关,也有可能与 使用的 gerrit有关。
(少使用reset --hard,如果你在上线前这么操作一波,也不知道有没有丢失代码,那个压力是空前大的,亲测)
- 第二种方法:(这种方法的使用场景是,修改代码量比较少的情况下)
将覆盖的代码,拷贝后,覆盖到现在的代码中进行还原处理了。最后将还原后的代码提交到远程仓库。
(尽量使用这种方法)