多语言展示
当前在线:579今日阅读:26今日分享:39

github:解决 fetch first,non-fast-forward

以下不是严格的步骤,请看完整篇经验后,再结合具体问题多次实践。
方法/步骤
1

fetch first出现问题的原因:提示已经说明了,因为github上的远程库与本地库版本不一致,要先fetch first。

2

解决方法1:强制上传输入命令:git push origin master -f以上命令,相当于 git push --force origin master注意,origin master等可以根据自己的情况自行修改,但 git push -f 是不变的。

3

解决方法2:根据提示解决(git fetch)fetch (不会自动合并)查看更新情况再有选择地合并。fetch更新到本地仓库有两种方式:a)比较本地的仓库和远程参考的区别(不推荐,可能出现新错误)命令:git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master命令:git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master命令:git log -p master.. origin/master//比较本地的仓库和远程参考的区别命令:git merge origin/master//把远程下载下来的代码合并到本地仓库,远程的和本地的合并

4

之后再进行git push -u origin master。有可能会解决问题,也有可能出现non-fast-forward等问题,因此不推荐。

5

b)比较master分支和备份分支的区别(不推荐,手累)命令:git fetch origin master:temp //从远程的origin仓库的master分支下载到本地并新建一个分支temp命令:git diff temp            //比较master分支和备份分支的区别注意:这里可能要一直enter下去,直至区别加载完成。命令:git merge temp          //合并temp分支到master分支命令:git branch -d temp       //删除temp命令:git push -u origin master

6

解决方法3:git pull(相当于从远程获取最新版本并merge到本地)git pull --rebase origin master git push -u origin master

7

在解决方法2中,还可能出现 non-fast-forward 错误。错误的原因是:文件冲突。本地的代码和远程存储库文件数量不一致(远程库中存在本地项目中不存在的文件 或 本地项目不是在远程Repository代码的基础上修改的。)这时候,需要执行命令:git push origin master -f或 git push --force origin master

8

刷新网页,问题解决。

注意事项
1

git pull和git fetch的区别在于,合并的方式。前者自动合并可能影响版本,后者不会自动合并。

2

在实际使用中,git fetch更安全一些,但也更麻烦一些。

推荐信息