在使用git 对文件进行push到gitHub时可能会出错,信息如下
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/xxxxxx
hint: Updates were rejected because
the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
错误原因:
更新被拒绝,因为远程仓库包含本地没有的部分。
可能你在另一个存储库推送到了远程仓库,但是现在用的这个本地存储库没有跟远程仓库同步。
解决办法:
你需要先同步远程仓库。使用 git pull
命令,取回远程主机某个分支的更新,再与本地的指定分支合并。然后就可以push到远程仓库啦
git pull
完整格式如下:
git pull <远程主机名> <远程分支名>:<本地分支名>
- 取回远程origin主机的next分支,与本地的master分支合并:
git pull origin next:master
- 远程分支与当前分支是合并关系时,本地分支名可以省略:
git pull origin next
- git clone时,所有本地分支默认与远程主机的同名分支,建立追踪关系(tracking),也就是本地的master分支自动"追踪"远程origin/master分支。此时可以省略远程分支名:
git pull origin
- git clone后,当前分支只有一个追踪分支,可以省略远程主机名,直接:
git pull
tips
之前遇到问题在网上找办法的时候,不小心找到了个错误的,然后也没发现问题,就这么用了,后来经过辰辉~的提醒,又仔细查了查资料,终于搞明白了。
使用
git push -f origin master
命令,也是可以完成push推送的!!!
但是!!!
这个命令的作用是强制push,慎用啊!它是直接把本地的push到远程仓库,然后把远程仓库中不同的地方全都抹掉覆盖了。这种逆天的命令真是醉了呢,幸亏之前用这个命令的时候没有造成什么损失。。