问题
在push代码时,遇到这种问题 Updates were rejected because the tip of your current branch is behind
(更新被拒绝,因为当前分支的落后与远程分支)
解决
有三种方案:
- push前先将远程repository修改pull下来,然后在推送;
git pull origin master
git push -u origin master
2. 使用强制push的方法:
git push -u origin master -f
这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。
3. 若不想merge远程和本地修改,可以先创建新的分支:
git branch [name]
#然后push
git push -u origin [name]
衍生问题
使用上述方法在pull时可能会遇到如下问题:
- git pull 提示这个错误,fatal: refusing to merge unrelated histories ,中文意思就是拒绝合并不相关的历史。解决方案可以 查看这篇。
- git pull 提示这个错误
There is no tracking information for the current branch(没有当前分支的跟踪信息)
这是因为本地分支和远程分支没有建立联系,使用下面命令查看:
# 可以查看本地分支和远程分支的关联关系
git branch -vv
# 查看远程仓库
git remote -v
解决方法:
一种方法是直接指定远程master:
git pull origin master
另外一种方法就是先指定本地master到远程的master,然后再去pull:
git branch --set-upstream-to=origin/远程分支的名字 本地分支的名字
git pull
衍生问题1解决:
在使用 git pull 时可能会遇到这个错误:fatal: refusing to merge unrelated histories
。
中文意思就是拒绝合并不相关的历史。
解决
出现这个问题的最主要原因还是在于本地仓库和远程仓库实际上是独立的两个仓库。假如我之前是直接 git clone
的方式在本地建立起远程 github 仓库的本地克隆仓库就不会有这问题了。查阅了一下资料,发现可以在 pull 命令后紧接着使用 --allow-unrelated-history 选项来解决问题(该选项可以合并两个独立启动仓库的历史)。
git pull origin master --allow-unrelated-histories
以上是将远程仓库的文件拉取到本地仓库了,紧接着将本地仓库的提交推送到远程github仓库上,使用的命令是:
git push <远程主机名> <本地分支名>:<远程分支名>
# 常用的举例就是:
git push origin master:master
这样就可以提交成功了。