多人开发分支git pull 时遇到non-fast-forward报错
程序员文章站
2022-03-04 15:01:00
...
我远程上有一个dev分支,使用git pull时报错non-fast-forward。原因是在我commit前,另一位同事已经commit并且push到了远程分支。我在这位同事的操作之后,没有pull,而直接commit了自己的修改,然后再pull的时候,我的分支版本就已经比远程分支版本高了。
每commit一次,分支版本就更新一次,比如一开始我和同事都是从远程pull下拉的版本A,随后同事commit了版本B,并且push到远程。我再在本地commit,版本就变成了C,再次commit,就变成版本D。此时我pull远程分支,但由于远程分支的是版本B,而我的本地分支是版本D,就会报错。
! [rejected]xxx-> xxx (non-fast-forward)
要解决这个问题,就需要把版本回退到远程分支上的版本B,并将自己的修改暂存,后面再提交,具体步骤如下:
- 1.git pull origin dev:dev
出现non-fast-forward的错误,证明您的本地库跟远程库的提交记录不一致,即
你的本地库版本需要更新 - 2.git reset head^^
若你的本地库已经commit最新的更改,则需要回到你的版本更改之前的版本(head代表最新版本,head^ 代表次新版本,head^^代表次次新版本) - 3.git add .
git stash
暂存修改,它会在你的本地新建一个“备用”文件夹,将修改保存在这里 - 4.git pull origin dev:dev
因为版本已经回退,此时pull就会成功 - 5.git stash pop
将暂存的内容重新add、commit - 6.git add .
提交所有已被追踪的内容(会根据.gitignore筛选,注意git add *不会) - 7.git push origin dev:dev
提交到远程分支 - 8.删除暂存的“备用”文件夹并提交到远程
git rm -r “备用”
git add .
git push origin dev:dev
上一篇: H5 localStorage的使用
下一篇: Java判断是否包含中文/中文字符