昨天在用Git的时候遇到了一个小的冲突,不过这让我更加了解了Git
问题描述
1 2 3 4 5 6 7 8
| $ git push -u origin master To git@github.com:******/Demo.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'git@github.com:******/Demo.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') hint: before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
|
上面是我在一次push时遇到的问题,主要是因为我在github的网页上添加了一个readme文件,然后我在本地上传时就会出现该问题,这是由于本地与远程的版本库不一致
解决方案
第一:强制修改 1
| git push origin master -f
|
不过这会导致不好的效果,因为这样做了,那么你远程仓库修改就无效了
第二:先pull,在push 1 2
| git full origin master git fush origin master
|
这是一个比较好的解决方案,不过我们也不知道远程修改是否正确,冒然合并有些风险
第三:创建新分支 1 2
| git branch [name] git push origin [name]
|
Git技巧
上面的解决方案我都是从网上搜来的,不过我学到了很多东西.
先就是push格式
1
| git push <远程主机名> <本地分支名>:<远程分支名>
|
可能会奇怪了,为什么上面所有的命令都没有远程分支名,这是因为本地分支和远程分支有一个追踪关系,知道了本地分支,自然就知道了远程分支,这是默认的做法,其实你也可以换其他远程分支名
上面命令可以查看与当前分支有追踪关系的分支.
还有就是我们经常看到: 1
| git push -u origin master
|
这里想说的是-u这个参数,通过查:
我们知道它代表的是set-upstream,不过有点不好理解,upstream翻译成中文是上游的意思,我觉得更好的理解是依赖,这里就是把origin设置成默认主机,之后push就可以直接使用下面命令:
git的知识点比较多,而且都靠实践学习,这里就说这么多,最后推荐两个博客
upstream and downstream
Git远程操作详解