Git提交失败之 Updates were rejected because the tip of your current branch is behind

错误显示

Git提交失败之 Updates were rejected because the tip of your current branch is behind_第1张图片

D:\devworkspace\ecpphoton\jcodef>git push
To https://github.com/osxm/jcodef.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/osxm/jcodef.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

错误产生过程

笔者在github上创建一个repository, 之后和本地的路径关联后提交代码出现以上错误。具体过程如下:

  1. 在 Github的页面上:https://github.com, 创建一个repository
  2. 在本地通过Eclipse上建立一个Project, 或是一个已经存在的目录也可以。
    总之是把本地目录进行Git 版本控管。
    3.本地使用Git Cmd 切换到本地项目目录之后Git 的初始化:
git init

4.添加远端库地址:

git remote add origin https://github.com/XXX/XXXXX.git

以上XXXX 替换成自己的。 这里使用的是https 协议的, 也可以使用ssh 协议, 不过需要把ssh 的pubkey复制到github。

  1. 获取远端代码
git pull

出现如下页面:
Git提交失败之 Updates were rejected because the tip of your current branch is behind_第2张图片
(注意了:问题就处在这一步了)

  1. 添加需要控管的文件并提交到本地库
git add *.java
git commit -m "oscar commit"
  1. 推送到远端
git push

报本地分支没有对应到远端的分支的错误:
在这里插入图片描述

8.关联远端分支

git branch --set-upstream-to=origin/master

9.再进行git push推送到远端,就出现的本文开头的错误了。
提示就是本地分支比远端分支的版本要后。回到上面的第5步, 虽然执行了git pull, 但是没有关联到远端分支, 所以并没有获取远端分支的最新版。

这时候是否重新pull一下就可以了呢?执行 git pull, 出现如下画面:

在这里插入图片描述

拉取失败, 拒绝merge 不相关的历史, 因为本地也有提交。

解决办法

  1. 方案一
    使用允许无关联的历史记录的参数拉取之后再 push
    git pull origin master --allow-unrelated-histories
    git push

2.方案二

git push -u origin master -f 

你可能感兴趣的:(430-代码控管与系统构建,Git轻快学练战)