我试图关注this post,但感到困惑,而不是让我的问题得到解决。
以下是该方案。
我创建了一个像git checkout -b <branch_name>
这样的分支。然后我做了一些改变并做了
git add .
git commit -m "comment"
现在所有这些更改都在我未提交的本地<branch_name>
分支中。我想做的是将这些变化推向上游,但我想把它推到一个不存在的分支,例如,<branch_name>_test
我不想把它推到我的<branch_name>
。我怎么能这样做。
答案 0 :(得分:50)
首先,让我们注意git push
&#34;想要&#34;还有两个论点,如果你不提供它们,它们会自动生成。因此,基本命令为git push remote refspec
。
remote
部分通常是微不足道的,因为它几乎总是只有origin
这个词。更棘手的部分是 refspec
。最常见的是,人们在这里写一个分支名称:git push origin master
。这将使用您的本地分支推送到遥控器上同名的分支 1 ,并在必要时创建它。但它不必只是一个分支名称。
特别是, refspec
有两个以冒号分隔的部分。对于git push
,左侧的部分标识要推送的内容, 2 ,右侧的部分标识要提供给远程的名称< / em>的。在这种情况下,左侧的部分为 branch_name
,右侧的部分为branch_name_test
。例如:
git push origin foo:foo_test
当您正在进行推送时,您可以通过向git push
添加-u
来告知您的git push
同时设置分支机构的上游名称 foo_test
个选项。设置上游名称会使您的git保存git push
(或其他)名称,这样,当您在foo
分支上时,没有参数的未来foo_test
可以尝试要推送到遥控器上的origin
(在这种情况下,git也会保存遥控器-u
,这样你也不必输入它。)
您只需要传递git branch --set-upstream-to
一次:它基本上只为您运行-u
。 (如果稍后再次传递git branch --set-upstream-to
,它会重新运行上游设置,按照指示进行更改;或者您可以自己运行push.default
。)
但是,如果您的git是2.0或更新版本,并且您没有设置任何特殊配置,那么您将遇到我在上面的脚注1中输入相同类型的内容:simple
将设置为{{ 1}},拒绝推送,因为上游的名称与您自己的本地名称不同。如果将push.default
设置为upstream
,git将停止抱怨 - 但最简单的解决方案是首先重命名本地分支,以便本地和远程名称匹配。 (要设置的设置和/或是否重命名分支,取决于您。)
1 更准确地说,git会查询您的remote.remote.push
设置以获得refspec的上游一半。如果您未在此处设置任何内容,默认将使用相同的名称。
2 这不一定是分支名称。例如,您可以在此处提供HEAD
或提交哈希。如果您使用分支名称以外的其他内容,可能必须拼出右侧的完整refs/heads/branch
(这取决于遥控器上已有的名称)。
答案 1 :(得分:36)
只需将此分支推送到其他分支名称
即可 git push -u origin branch_name:branch_name_test
答案 2 :(得分:11)
git push --set-upstream origin <branch_name>_test
--set-upstream
设置本地分支与远程之间的关联。你只需要第一次这样做。在随后的推动下,您可以这样做:
git push
如果您尚未设置origin
,请使用:
git remote add origin <repository_url>
然后重试上述命令。
答案 3 :(得分:7)
使用现代Git版本,使用的命令是:
git push -u origin <branch_name_test>
这将自动将分支名称设置为从远程跟踪并一次性推送。
答案 4 :(得分:7)
您可以将本地分支推送到 new 远程分支,如下所示:
origin
(假设master
是您的远程,test
是您的本地分支名称,-u
是您希望创建的新远程分支的名称。)
如果您想同时设置本地分支以跟踪新创建的远程分支,则可以使用--set-upstream
(在较新版本的Git上)或git push -u origin master:test
来执行此操作,因此:
git push --set-upstream origin master:test
或
test
...将根据您当地的origin
,和设置,在远程存储库master
中创建一个名为master
的新远程分支{{1}}跟踪它。