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 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

对一款不到2KB大小的JavaScript后门的深入分析

在一台被入侵的服务器上,我们发现了一个攻击者遗留下来的脚本。该脚本是由JavaScript编写的,主要功能是作为Windows后门及C&C后端使用。在这里我首先...

3214
来自专栏运维技术迷

Shell系列-Shell概述

一、shell环境及特性 1.什么是shell? 负责向内核翻译以及传达用户/程序指令,相当于操作系统的”外壳”.在Linux中默认shell一般为/bin/b...

2705
来自专栏黑白安全

如何检测提升网站访问速度

可以百度一下“网站测速”通过工具检测网站所在服务器的响应速度,国内外都可以测试,查看服务器在不同地区的响应速度。

2364
来自专栏大数据人工智能

小白请点进来!零基础搭建Hadoop大数据处理环境

由于hadoop需要运行在Linux环境中,而且是分布式的,因此个人学习只能装虚拟机,本文都以VMware Workstation为准,安装CentOS7,具体...

49310
来自专栏大数据技术学习

零基础学习大数据,搭建Hadoop处理环境

由于Hadoop需要运行在Linux环境中,而且是分布式的,因此个人学习只能装虚拟机,本文都以VMware Workstation为准,安装CentOS7,具体...

2287
来自专栏BeJavaGod

SSO单点登录的发展由来以及实现原理

单点登录以及权限,在很早之前都有写过,不过都比较简单,今天就具体说一下,以及下一步要做的 1、web单系统应用 早期我们开发web应用都是所有的包放在一起打成一...

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

svn 基础架构介绍

3615
来自专栏后端技术探索

记一次worker_rlimit_nofile配置引发的问题

记录一次最近公司SEO优化压测,以前所有页面上的数据都是通过JS获取的,这样会有一个问题,就是SEO不友好,所以就增加了一层Node,接口请求放在了Node里,...

613
来自专栏子勰随笔

iMac(OS X)不可或缺的套件管理器 —— Homebrew

1585
来自专栏Petrichor的专栏

git: 四种git协议 (本地协议、HTTP 协议、SSH协议、 Git 协议)

到目前为止,你应该已经有办法使用 Git 来完成日常工作。 然而,为了使用 Git 协作功能,你还需要有远程的 Git 仓库。 尽管在技术上你可以从个人仓库进行...

2621

扫码关注云+社区