一文把握git push命令
git push命令
以上列举的参考文献将的非常棒,是目前我见到的写的最完整的。
git push命令用于将本地分支的更新,推送到遥程主机。它的格式与git pull命令相仿。
git push <遥程主机名> <本地分支名>:<遥程分支名>
注重:这里的:前后是必须没有空格的。
假如省略遥程分支名,则表示将本地分支推送与之存在"追踪关系"的遥程分支(通常两者同名),假如该遥程分支不存在,则会被新建。
git push origin master
上面命令表示,将本地的master分支推送到origin主机的master分支。假如后者不存在,则会被新建。
假如省略本地分支名,则表示删除指定的遥程分支,因为这等同于推送一个空的本地分支到遥程分支。
#慎用!删除遥程仓库的分支 git push origin :master # 等同于 git push origin --delete master
上面命令表示删除origin主机的master分支。
假如当前分支与遥程分支之间存在追踪关系,则本地分支和遥程分支都可以省略。
git push origin
上面命令表示,将当前分支推送到origin主机的对应分支。
假如当前分支只有一个追踪分支,那么主机名都可以省略。
git push
假如当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。
git push -u origin master
上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
参考文献:http://www.cnblogs.com/dyh-air/p/9257237.html
PS:git push 命令详解
对 git push 命令一直都是处于一知半解的状态,就知道它是将本地的更改推送到遥程别名里面,
直到最近通过一写训练才更加清楚了一点
git push 顾名思义就是将本地的更新推送到遥程别名
它有几个常见的选项,接下来一一对它们讲解
如果我们现在只有一个遥程别名(remote): origin
1. 无参数,直接 git push
git push 这种情况 git 会检查当前所在的分支有没有设置 upstream branch, 也就是该分支对应的上游分支,也就是对应的遥程别名(remote)里面的分支。
- 假如有,则直接推送当前分支的历史版本到遥程别名里面对应的分支。此时 git 只推送该分支的更新,不考虑其他分支。
- 假如没有(新建立的分支),则会直接报错:The current branch d has no upstream branch. 此时只能参考以下的情况做处理
2. git push -u origin 当前分支名 or git push --set-upstream origin abc
新建立的分支第一次直接 push 时会报错,是我们还没有设置当前分支对应的遥程别名里面的分支,可以使用的命令 git push --set-upstream origin abc,这样就可以将本地的 abc 分支(假设本地分支鸣做abc)推送到遥程别名里面的 abc 分支,假如遥程别名里面没有 abc 这个分支,则会自动建立一个 abc 分支并接收推送的内容;并且为当前的分支设置了 upstream branch, 以后再推送该分支就可以直接执行 git push 了(当然也只是push当前所在的本地分支,不会处理其他本地分支)。假如以后想要修改 upstream branch, 可以使用 git branch --set-upstream-to origin/abc,设置好了以后该分支也可以直接执行 git push 向遥程别名的响应分支推送了,但是修改 upstream branch 有个问题,就是比如现在是 abc 分支,一般来讲肯定也是推送到遥程别名里面的 abc 分支,本地分支和遥程别名的分支一一对应,修改之后比如 git branch --set-upstream-to origin/efg 后,以后再 git push 时 git 就会报错:The upstream branch of your current branch does not match the name of your current branch. 就是遥程的分支名和当前的分支名不匹配,并且提示假如推送到你想要的分支。
3. git push --all
直接推送所有本地分支,那些没有设置 upstream branch 的会自动创建响应的遥程别名分支,然后接收推送的内容,但是没有为本地分支设置遥程别名的分支
到此这篇关于git push命令详解的文章就介绍到这了,更多相关git push命令内容请搜索以前的文章或继承浏览下面的相关文章希望大家以后多多支持!