分享2:git代码推不上去的解决方法

无疑github是全球最大的代码托管平台,被誉为程序员的天堂。为了能将本地的代码托管到上面,我们不得不学习Git的使用方法

问题描述:

我们在往github上推送文件、代码时,通常使用git push origin master的命令是没有问题的,但是偶尔会遇到这种情况
分享2:git代码推不上去的解决方法_第1张图片

解释:

这段信息的意思是github上版本的内容比本地的代码版本要新,所以我们在执行命令时,Git不让你推送上去。

这是怎么造成的呢?

通常这种情况会发生在多数人一起开发的时候
分享2:git代码推不上去的解决方法_第2张图片
Sherly 和 Eddie 两个人在差不多的时间都从 Git Server 上拉了一份工程项目下来准备进行开发。
Sherly 手脚比较的快,先完成了,于是先把做好的成果推一份上去。
Eddie 不久后也完成了,但当他要推上去的时候发现推送不上去了…

怎么解决呢?

解决方法有两种:

  1. 第一种:先更新再推送
    因为你的电脑里面的内容是比较旧的版本,所以你应该先更新一下线上的版本回来,然后再将自己开发的成果放进工程项目中进行推送
$ git pull --rebase
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/eddiekao/dummy-git
   37aaef6..bab4d89  master     -> origin/master
First, rewinding head to replay your work on top of it...
Applying: update index

这里加了 --rebase参数,表示将线上内容更新下来后使用rebase的方式合并,当然你想用一般的合并方式也可以。然后如果没有发生冲突的话,接着应该就可以顺利的推送上去了。
2. 第二种:强行推送
首先个人不推荐这种方式
凡是总有先来后到,在上面的例子中,Sherly先推上去的内容,后来推送的人就应该先更新一下,再推送,否则按照规定是推不上去的。不过这规则也是有例外的,只要加上了–force或者-f参数,它就 会强行的将添加的文件、代码推送上去,把Sherly之前的内容覆盖掉:

$ git push -f
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (17/17), done.
Writing objects: 100% (19/19), 2.16 KiB | 738.00 KiB/s, done.
Total 19 (delta 6), reused 0 (delta 0)
remote: Resolving deltas: 100% (6/6), done.
To https://github.com/eddiekao/dummy-git.git
 + 6bf3967...c4ea775 master -> master (forced update)

虽然这样一定会成功,但在日常的开发过程中,我们就要去面对Sherly,需要同她解释为什么你把她的进度给覆盖掉。

你可能感兴趣的:(分享)