首先,需要注意的是git push
命令“需要”两个额外的参数,如果您不提供它们,它将自动补全。因此,基本的命令是git push remote refspec
。
remote
部分通常很简单,因为它几乎总是只是单词origin
。更棘手的部分是refspec
。最常见的情况是在这里写一个分支名称:git push origin master
,例如。这使用您的本地分支推送到同名分支1上的远程分支,并在必要时创建它。但它不一定只是一个分支名称。
特别地,refspec
有两个由冒号分隔的部分。对于git push
命令,左侧部分标识要推送的内容2,右侧部分标识要给远程的名称。在本例中,左侧部分将是branch_name
,右侧部分将是branch_name_test
。例如:
git push origin foo:foo_test
当你进行push操作时,可以通过在git push选项中添加-u,同时设置你的分支上游名称(upstream name)。设置上游名称会让git保存foo_test(或其他名称),这样,在你处于foo分支时,未带参数的将来的git push尝试推送到远程的foo_test。Git还会保存远程,这里是origin,因此你不必再输入它。
你只需要传递一次 -u:它基本上就是为你运行“git branch --set-upstream-to”。(如果以后再次传递 -u,则重新运行上游设置,并按指示更改;或者您可以自己运行“git branch --set-upstream-to”。)
但是,如果你的git是2.0或更新版本,并且没有设置任何特殊配置,你将遇到与我在注释1中输入的相同的问题:push.default将被设置为简单(simple),它将拒绝推送,因为上游的名称与你本地的不同。如果将push.default设置为upstream,git将停止抱怨,但最简单的解决方案是首先重命名你的本地分支,以使本地和远程名称匹配。 (要设置哪些设置,或者是否要重命名你的分支,由你决定。)
1更精确地说,git会查找remote.remote.push设置以推导出refspec的上游部分。如果你在这里没有设置任何内容,则默认使用相同的名称。
2这不一定是分支名称。例如,你可以在这里提供HEAD或提交哈希值。如果使用的不是分支名称,则可能必须在右侧完全拼写出refs/heads/branch(这取决于远程已经有哪些名称)。
git push origin remoteBranch
是将你的本地 remoteBranch
推送到远程 remoteBranch
。 - Junior Tour