git push用法和常见问题分析
Git push
1 | git push origin test:master |
如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。
1 | git push origin :test |
举个例子:
1 | git push origin :origin/Android_HK_K501_77-W916 |
这两个操作是等价的,第二个操作的第一行的意思是添加一个标记,让origin指向ssh://git@dev.lemote.com/rt4ls.git,也就是说你操 作origin的时候,实际上就是在操作ssh://git@dev.lemote.com/rt4ls.git。origin在这里完全可以理解为后者 的别名。
注意:需要说明的是,默认情况下这条语句等价于提交本地的master仓库到远程仓库,并作为远程的master分支。
如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。
常见错误:
- 1.error:failed to push some refs to …
当要push代码到git时,出现提示:
1 | error:failed to push some refs to ... |
问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。于是你有2个选择方式:
强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容
1 | git push -f |
- 先把git的东西fetch到你本地然后merge后再push这2句命令等价于
1
2git fetch
git mergegit pull
- 先把git的东西fetch到你本地然后merge后再push
可是,这时候又出现了如下的问题:
上面出现的 [branch “master”]是需要明确(.git/config)如下的内容
1 | [branch "master"] |
这等于告诉git2件事:
- 1,当你处于master branch, 默认的remote就是origin。
- 2,当你在master branch上使用git pull时,没有指定remote和branch,那么git就会采用默认的remote(也就是origin)来merge在master branch上所有的改变
如果不想或者不会编辑config文件的话,可以在bash上输入如下命令行:
1 | git config branch.master.remote origin |
之后再重新git pull下。最后git push你的代码.
参考