版权声明:那个啥,转载注明出处哈 https://blog.csdn.net/qq_36415230/article/details/81878040
如果大家使用同一个分支,终会出现一个人上传代码后,覆盖掉远程代码,导致其他人拉取失败的问题。
这个时候,除最终上传代码的人外,其他人想上传代码那几乎不可能,即使时上传者本人,也只能在原有的基础上,做修改。
总之,正常的方法,在此时是无法覆盖远程代码的了。
暂缓先不说出现这个问题的原因,只说解决办法。
一,版本回退,拉取失败,那就强制拉取(我的理解 )
git pull --rebase 远程主机名 远程分支名
远程主机名默认origin .
例如:
git pull --rebase origin dev
代表拉取远程节点到本地库,并且合并。
也就是说,远程库的操作记录和本地的合并了。
这个时候,输入
git log
查看历史版本号,复制,英文状态下的q退出git log。
输入
git reset --hard 版本号
回退到对应的版本
再输入
git push origin dev -f
采用强制推送。此时就可以覆盖掉远程的代码了。
需要注意的是,这种方法会丢失在这个版本之后的修改,而且,导致上传覆盖代码的人会丢失远程修改,这个时候,在确保覆盖代码的人代码正确前不允许其上传,不然还是会覆盖。
如果说那个人要重写,少了,无所谓,多的话,就不好办了。好在有一个补救的法子
执行之前的几步操作,现在远程库应该是正确的
之前覆盖代码的人执行命令
git pull --rebase origin dev
拉取远程的操作记录到本地并合并。git log一下,看看是否有了远程其他小伙伴的操作记录。
有的话,就可以push上去了。
如果不行,那只能另建文件夹悲催的复制粘贴了。或者重写。
二,就是确定自己电脑的版本无误,直接强制推送。
强行推送一波,覆盖掉服务器上的代码
git push origin dev -f