在git的bare仓库中,是否有一种方法可以推送当前不在HEAD中的分支?
例如,我有两个分支:
$ git branch
* master
another
我有两个已设置的远程分支: origin
和 another
。
我需要能够在不改变HEAD的情况下,只用一个命令从another
推送到another/another
。
原问题、回答和许多评论中的所有“另一个另一个”都很令人困惑(这正是为什么在一开始就正确命名你的东西非常重要的完美例子),我不禁要写下另一个回答,如下所示。
问:在git(裸)仓库中是否有一种方法可以推送当前不在HEAD中的分支?例如,我有两个分支和两个远程分支。 我需要能够通过一个命令从 feature
推送到 upstream/feature
,而不改变HEAD。
$ git branch
* master
feature
$ git remote
origin
upstream
A: 执行 git push remote_name branch_name 命令。在上面的例子中,命令应该长成这样。
$ git push upstream feature
问:这是不是意味着它将把本地的feature
推送到upstream/feature
?我一直以为它会把当前HEAD推送到upstream/feature
。
答:是的。 feature
部分是一个 refspec ,格式为 src:dst
。 这意味着将本地分支 src
推送到远程分支 dst
。 如果省略了 :dst
,则将本地分支 src
推送到远程分支 src
。 您还可以指定不同的名称作为远程分支。只需执行:
$ git push upstream feature:cool_new_feature
(感谢 @gabriele-petronella 和 @alexkey 提供本答案的材料。)
upstream
和origin
都只是特定远程的别名,但它们在GitHub分支工作流程的惯例下具有不同的含义。除非你知道自己在做什么,否则不要假设你可以在任何git命令中随意替换upstream
为origin
。 - RayLuo使用 git push
命令,您可以指定远程仓库和本地分支。
git push remotename branchname
another
是一个refspec,通常具有src:dst
格式。这意味着将本地分支src
推送到远程分支dst
。如果省略:dst
,则会将本地分支src
推送到远程分支src
。 - Lars Noschinskigit push another another
与git push another another:another
完全等效。虽然我感觉我不能再忍受另一个"another"了。 - Gabriele Petronellagit push origin mybranch:mybranch
。 - Mike Funk当我尝试使用--set-upstream
(-u
)推送a到远程新分支时
git push MyLocalBranch -u origin MyLocalBranch
我没有检出分支,所以收到了错误信息。
fatal: 'MyLocalBranch' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
感谢评论git push NOT current branch to remote
是的。另一个是refspec,通常具有src:dst形式。这意味着将本地分支src推送到远程分支dst。如果省略:dst,则将本地分支src推送到远程分支src。
从Lars Noschinski得知解决方案是调用
git push -u origin MyLocalBranch:MyLocalBranch
git branch -m another another_branch
或者git remote rename another another_remote
。 - Klas Mellbourn