git上传更新项目-错误总结

前些天做完项目一部分内容的时候,想git上传代码上去远程仓库里,却出现了不少git的错误提示信息。在这里总结一下吧:

一、正确的git上传更新项目步骤为:

1、git add . 添加

2、git commit 提交

3、git pull 同步

4、git push 上传更新

那么在这个正常的步骤中,一般人会出现的问题有:

二、 failed to push some refs to 'git@github.com:你的远程库名.git'

这个是你git push上传更新代码的常见错误。我个人的理解是,远程仓库中的项目代码跟你本地仓库中的代码为进行版本对比,也就是说,git他不知道你修改了哪部分代码,在上传的时候,就容易出现在“同时修改同一行代码”的情况发生;当git对比两个版本后,他知道了你修改了哪部分,在根据修改的部分进行上传更新;其他人再次访问远程仓库的时候,也就可以下载当前最近的版本和了解修改的代码,以至于不会出现同一时间不同的人员上传更新代码。

解决办法是:

git remote add origin "仓库地址"

gti pull origin master --allow-unrelated-histories

三、fatal: refusing to merge unrelated histories

中文翻译是:“致命的:拒绝合并无关的历史”,因为他们是两个不同的项目,要把两个不同的项目合并,git需要添加一句代码,在git pull,这句代码是在git 2.9.2版本发生的,最新的版本需要添加--allow-unrelated-histories

解决办法是:

改“git pull origin master”为:“gti pull origin master --allow-unrelated-histories”

四:为什么要先commit在pull,而不能先pull在commit上去呢?

这个先 commit 再 pull 再 push 的情况就是为了应对多人合并开发的情况,

  1. commit 是为了告诉 git 我这次提交改了哪些东西,不然你只是改了但是 git 不知道你改了,也就无从判断比较;
  2. pull是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在 git add && git commit && git pull 这三连,再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉
  3. 出现代码覆盖或者丢失的情况:比如A B两人的代码pull 时候的版本都是1,A在本地提交了2,3并且推送到远程了,B 进行修改的时候没有commit 操作,他先自己写了东西,然后 git pull 这个时候 B 本地版本已经到3了,B 在本地版本3的时候改了 A 写过的代码,再进行了git commit && git push 那么在远程版本中就是4,而且 A 的代码被覆盖了,所以说所有人都要先 commit 再 pull,不然真的会覆盖代码的

原文发布于微信公众号 - 程序员的碎碎念(gh_53e607dd4782)

原文发表时间:2017-10-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Laoqi's Linux运维专列

nfs共享目录及挂载

764
来自专栏逸鹏说道

Linux包系列的知识(附:Ubuntu16.04升级到18.04的案例)

Linux基础:https://www.cnblogs.com/dunitian/p/4822808.html#linux

1014
来自专栏小巫技术博客

Android技巧2:登录注册解决方案

882
来自专栏Laoqi's Linux运维专列

apache-ab 并发负载压力测试

1283
来自专栏乐享123

寻找并删除Git记录中的大文件

2214
来自专栏Crossin的编程教室

把你开发的网站免费发布到互联网上(1)

0. 前言 之前我们写过很多代码,但几乎都是在自己的电脑上运行的。如果别人要看,也只能在电脑上演示,或者把代码发给他运行。 而在学习 web 开发,比如 Dja...

3066
来自专栏北京马哥教育

GitHub 使用详解

本文大纲 GitHub简介 注册GitHub账号 配置GitHub 使用GitHub 参与GitHub中其它开源项目 注,GitHub官网:https://g...

3636
来自专栏逸鹏说道

Linux包系列的知识(附:Ubuntu16.04升级到18.04的案例)

Linux基础:https://www.cnblogs.com/dunitian/p/4822808.html#linux

1716
来自专栏自由而无用的灵魂的碎碎念

解决win7能上网却右下角网络图标显示红色叉号的问题

系统:windows server 2008 r2,问题现象:显示红色叉号,可以上网,同时无线开关是关闭的。

612
来自专栏Puppeteer学习

基于puppeteer的网络拦截工具flyover

我们知道所有请求,无论是页面请求还是js 发起的各种请求,最终都是通过浏览器软件发起的,服务器响应后,都是响应给浏览器的,那么整个工程可以细分为如下流程(个人理...

48117

扫码关注云+社区