Git推送到远程分支

up9lanfz  于 2023-02-11  发布在  Git
关注(0)|答案(6)|浏览(208)

我试图遵循this post,但感到困惑,而不是得到我的问题解决。
情况是这样的。
我创建了一个类似git checkout -b <branch_name>的分支,然后做了一些修改

  1. git add .
  2. git commit -m "comment"
    现在所有这些更改都在我未提交的本地<branch_name>分支中,我想做的是将这些更改推送到上游,但我想将其推送到一个不存在的分支,例如<branch_name>_test
    我不想把它推到我的<branch_name>上,怎么推呢?
aiqt4smr

aiqt4smr1#

只需将此分支推送到不同的分支名称

git push -u origin localBranch:remoteBranch

如果你不想玩,就

git push origin localBranch:remoteBranch
kx7yvsdv

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 origin foo:foo_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*,尽管(这取决于远程控制器上已经有什么名称)。

deyfvvtc

deyfvvtc3#

git push --set-upstream origin <branch_name>_test
--set-upstream设置本地分支和远程分支之间的关联。您只需在第一次执行此操作。在后续推送时,您只需执行以下操作:
git push
如果尚未设置origin,请用途:
git remote add origin <repository_url>然后重试上述命令。

cx6n0qe3

cx6n0qe34#

您可以将本地分支推送到一个 * 新 * 远程分支,如下所示:

git push origin master:test

(假设origin是您的远程分支,master是您的本地分支名称,test是您希望创建的新远程分支的名称。)
如果您同时希望设置本地分支来跟踪新创建的远程分支,可以使用-u(在更新版本的Git上)或--set-upstream来实现,因此:

git push -u origin master:test

git push --set-upstream origin master:test

...将基于您的本地master在远程存储库origin中创建一个新的远程分支,名为test,* 并 * 设置您的本地master以跟踪它。

u0njafvf

u0njafvf5#

在现代Git版本中,要使用的命令是:

git push -u origin <branch_name_test>

这将自动设置分支名称为从远程跟踪并一次推送。

li9yvcax

li9yvcax6#

您可以使用此命令:
指挥结构:

git push -u origin <branch_name>

示例:如果您的银行名称是develop,则您的命令应如下所示...

git push -u origin develop

相关问题