我们首先看一下git push的基本用法:
git push origin test:master //提交本地test分支作为远程的master分支
git push origin test:test //提交本地test分支作为远程的test分支
git push origin :test //删除远程的test分支,但是本地还是会保存
常见的错误一:error:failed to push some refs to ....
下面是一个错误信息:
error:failed to push some refs to ...
Dealing with “non-fast-forward” errors
From time to time you may encounter this error while pushing:
出现这种问题的通常会伴随着"non-fast-foward"的出现,它的意思是不能通过快进的方式来直接提交。主要原因就是因为git仓库中已经有一部分代码,所以它不允许我们直接把我们的代码覆盖上去。
这个时候我们有两种选择:
(1)git push -f
利用强覆盖的方式把我们本地的代码替代git仓库内的内容
(2)git fetch 和 git merge ,当然我们可以用git pull来等价的替代,
它是先把git的东西fetch到我们本地后合并再推送
常见的错误二:failed to push some refs to '.../remote/"
下面是一个错误信息:
To ../remote/
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to '../remote/'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again. See the 'non-fast forward'
section of 'git push --help' for details.
通常我们在.git/config中如下配置即可:
[branch "master"]
remote = origin
merge = refs/heads/master
这等于告诉git两件事:
(1)当我们处于master branch,默认的remote就是origin
(2)当我们在master branch上使用git pull时,没有指定remote和branch,
那么git就会采用默认的remote,也就是origin来merge在master branch上所有的改变
如果我们不进行编辑的话,我们可以在命令行输入如下命令行:
$git config branch.master.remote origin
$git config branch.master.merge refs/heads/master
之后我们再次git pull就可以了,然后我们使用git push我们的代码即可。