我试图遵循this post,但感到困惑,而不是得到我的问题解决。
情况是这样的。
我创建了一个类似git checkout -b <branch_name>
的分支,然后做了一些修改
git add .
git commit -m "comment"
现在所有这些更改都在我未提交的本地<branch_name>
分支中,我想做的是将这些更改推送到上游,但我想将其推送到一个不存在的分支,例如<branch_name>_test
我不想把它推到我的<branch_name>
上,怎么推呢?
6条答案
按热度按时间aiqt4smr1#
只需将此分支推送到不同的分支名称
如果你不想玩,就
kx7yvsdv2#
首先,让我们注意到
git push
“想要”另外两个参数,如果你不提供它们,它会自动补上,因此基本命令是git push *remote**refspec*
。remote
* 部分通常是微不足道的,因为它几乎总是单词origin
。更复杂的部分是 *refspec
*。最常见的是,人们在这里写一个分支名称:例如git push origin master
,它使用本地分支推送到远程分支上同名的分支,如果需要的话,创建它,但它不一定只是分支名称。特别是,*
refspec
* 有两个用冒号分隔的部分。对于git push
,左边的部分标识 * 要推送的内容 *,2,右边的部分标识 * 要给予远程的名称 *。在这种情况下,左边的部分将是 *branch_name
*,右边的部分将是``branch_name_test
。例如:在推送的同时,你可以通过在
git push
选项中添加-u
来告诉git push
设置分支的 * 上游名称 ,设置上游名称会让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
,因为上游分支的名称与本地分支的名称不同,所以git会拒绝推送。如果你将push.default
设置为upstream
,git会停止抱怨,但最简单的解决方案是先重命名本地分支,这样本地分支和远程分支的名称就匹配了。(设置哪些设置和/或是否重命名分支由您决定。)1更准确地说,git会参考你的
remote.*remote*.push
设置来得到refspec的上游部分,如果你没有在这里设置任何东西, 默认 * 是使用相同的名称。2这不一定是一个分支名称。例如,你可以在这里提供
HEAD
,或者一个提交哈希。如果你使用分支名称以外的东西,你 * 可能 * 必须在右边拼写完整的refs/heads/*branch*
,尽管(这取决于远程控制器上已经有什么名称)。deyfvvtc3#
git push --set-upstream origin <branch_name>_test
--set-upstream
设置本地分支和远程分支之间的关联。您只需在第一次执行此操作。在后续推送时,您只需执行以下操作:git push
如果尚未设置
origin
,请用途:git remote add origin <repository_url>
然后重试上述命令。cx6n0qe34#
您可以将本地分支推送到一个 * 新 * 远程分支,如下所示:
(假设
origin
是您的远程分支,master
是您的本地分支名称,test
是您希望创建的新远程分支的名称。)如果您同时希望设置本地分支来跟踪新创建的远程分支,可以使用
-u
(在更新版本的Git上)或--set-upstream
来实现,因此:或
...将基于您的本地
master
在远程存储库origin
中创建一个新的远程分支,名为test
,* 并 * 设置您的本地master
以跟踪它。u0njafvf5#
在现代Git版本中,要使用的命令是:
这将自动设置分支名称为从远程跟踪并一次推送。
li9yvcax6#
您可以使用此命令:
指挥结构:
示例:如果您的银行名称是develop,则您的命令应如下所示...