史上最全的GIT教程:Push出现rejected - non-fast-forward错误

1.错误如下:
在这里插入图片描述
2.错误原因分析

文件冲突,本地的代码和远程Repository中的文件个数不一致(即远程Repository中存在本地项目中不存在的文件)或本地得项目不是在远程Repository代码的基础上修改的
经过检查,本次错误原因:发现是在建立Repository时,添加了ReadMe.md文件,导致和本地得项目分支不一致。

3.解决方案

(1)每次本地修改代码前先从git仓库pull下想要提交的分支的最新代码,改完了commit并push到git仓库。这里有个前提,修改、commit和push期间没人动你修改的文件。
(2)期间文件在git仓库被改了,那么重新从git仓库获取最新的分支代码,然后把自己的修改放上去提交。
(3)通过merge来解决冲突。当出现rejected –
non-fast-forward别慌,这时我们可以识别哪些文件有冲突,一个一个改,改好了再pull下最新代码,然后提交到远程仓库。

4.解决详解

(1)打开 Git Repositories,在 Working Directory 中确保可以看到要提交的工程 (2)在 Remotes
中可以看到远端分支,在分支下向左的绿色箭头图标代表Fetch,右键 -> Configure Fetch (3) 确认 URI 和 Ref
mappings都是正确的,点击 Save and Fetch,之后可以看到 Fetch Results 分支在一起,点击OK (4)此时在
Branches 中应该可以看到 Remote Tracking 存在远端分支 (5)右键 Branches 中的 Local 中的
master,选择 Merge (6)选择 Remote Tracking 中的 origin/master,点击 Merge
(7)可以重新提交代码了

5.代码冲突解决

(1)单个文件提交:首先跟远程仓库做比较,右键项目>Team->Synchronized
Workspace->确保没有冲突后再次右键修改的文件和目录->commit,在Git Staging里选中Unstaged
Changes窗口里要提交的文件->Add to Index->在Commit Messge里写提交说明->Commit and
Push->Next,注意这里不要选最下面的Force overwirte branch in remote if exists and
have deverged,否则本地仓库会覆盖远程仓库,造成覆盖别人代码的严重后果->OK

(2)冲突解决:上面在Synchronized
Workspace后出现冲突会有鲜艳的红色箭头出现,双击就可以看到哪个地方冲突了,一般是先把本地的改动保存好,从远程取下最新内容,右键选中该文件,点击Merge,再加上本地修改,最后提交。

发布了32 篇原创文章 · 获赞 5 · 访问量 8677

猜你喜欢

转载自blog.csdn.net/weixin_43679441/article/details/103593614