欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

多人开发分支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