tor*_*rek 60
首先,让我们注意git push"想要"另外两个参数,如果你不提供这些参数,它们会自动生成.因此,基本命令.git push remote refspec
这remote部分通常是微不足道的,因为它几乎总是这个词origin.更棘手的部分是refspec.最常见的是,人们在这里写一个分支名称:git push origin master例如.这将使用您的本地分支推送到远程控制器上的同名分支1,并在必要时创建它.但它不一定只是一个分支名称.
特别地,a refspec具有两个结肠分离的部分.因为git push,左侧的部分标识要推送的内容,2右侧的部分标识要提供给遥控器的名称.在这种情况下左边branch_name的部分是,而右边的部分是branch_name_test.例如:
git push origin foo:foo_test
Run Code Online (Sandbox Code Playgroud)
当你在做推,你可以告诉你git push设置你的分支的上游名字的同时,加入-u的git push选项.设置上游名称会使你的git保存foo_test(或者其他)名称,这样git push当你在foo分支上时,没有参数的未来可以尝试推送到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会查询您的设置以获得refspec的上游一半.如果您未在此处设置任何内容,则默认使用相同的名称.remote.remote.push
2这不一定是分支名称.例如,您可以HEAD在此处提供或提交哈希.如果您使用分支名称以外的其他内容,则可能必须在右侧拼出完整内容(这取决于遥控器上已有的名称).refs/heads/branch
Awa*_*yte 50
只需将此分支推送到不同的分支名称即可
git push -u origin branch_name:branch_name_test
Run Code Online (Sandbox Code Playgroud)
Sco*_*ott 14
git push --set-upstream origin <branch_name>_test
--set-upstream设置本地分支与远程之间的关联.你只需要第一次这样做.在随后的推送中你可以做到:
git push
如果您还没有origin设置,请使用:
git remote add origin <repository_url> 然后重试上面的命令.
Ter*_*ass 10
您可以将本地分支推送到新的远程分支,如下所示:
git push origin master:test
Run Code Online (Sandbox Code Playgroud)
(假设origin您的远程,master是您的本地分支名称,并且test是您希望创建的新远程分支的名称.)
如果您想同时设置本地分支以跟踪新创建的远程分支,则可以使用-u(在较新版本的Git上),或者--set-upstream:
git push -u origin master:test
Run Code Online (Sandbox Code Playgroud)
要么
git push --set-upstream origin master:test
Run Code Online (Sandbox Code Playgroud)
...将根据您的本地创建一个名为test远程存储库的新远程分支,并设置您的本地跟踪它.originmastermaster
使用现代Git版本,使用的命令将是:
git push -u origin <branch_name_test>
Run Code Online (Sandbox Code Playgroud)
这将自动将分支名称设置为从远程跟踪并一次性推送.