一次解决gitlab文件删除bug的处理过程
问题:不知道什么原因gitlab上的文件被误删除了,到gitlab上直接回退无法回退,
使用的回退方法:
方法1:将本地仓库保存文件夹1,重新建一个文件夹2并将远程仓库拉取到文件夹2,拷贝文件夹1覆盖文件夹2,然后再push上去。
方法2:如果在本地仓库有最新的版本,则直接强制将本地仓库push到远程仓库即可
git push -f origin master ------需要输入账号和密码
方法3:如果本地版本已经异常,将本地仓库的版本回退到正常版本:
git log 查看提交的版本信息 提取出commitID
git reset --hard commitID 回退到指定的版本
git push -f origin master;强制吧本地版本push'到远程仓库
当pull过程中出现error: Your local changes to the following files would be overwritten by merge:
意思是我台式机上新修改的代码的文件,将会被git服务器上的代码覆盖;我当然不想刚刚写的代码被覆盖掉,看了git的手册,发现可以这样解决:
方法1:如果你想保留刚才本地修改的代码,并把git服务器上的代码pull到本地(本地刚才修改的代码将会被暂时封存起来)
git stash
git pull origin master
git stash pop
git add 文件
git commit -a -m "message"
git pull 重新拉取一下代码
git push
git push -u origin master
此一来,服务器上的代码更新到了本地,而且你本地修改的代码也没有被覆盖,之后使用add,commit,push 命令即可更新本地代码到服务器了。
方法2、如果你想完全地覆盖本地的代码,只保留服务器端代码,则直接回退到上一个版本,再进行pull:
git log //查看版本更改信息
git reset --hard commitID
git log
git pull origin master
git版本回退命令:
git reset
强制拉取并覆盖本地代码命令:
git fetch --all
git reset --hard origin/master
git pull
----git pull 在什么情况下拉取 不会覆盖本地仓库修改的代码?
1、当无冲突时,本地未提交修改不会被覆盖,能够执行pull
2、当有冲突时,提示Your local changes to the following files would be overwritten by merge”,本次pull执行失败并且不会拉取远端代码,不用担心