我试图跟随 这篇文章,但没有解决我的问题,而是感到困惑。
情况是这样的。
我已经创建了一个类似 git checkout -b <branch_name>的分支
git checkout -b <branch_name>
git add .
git commit -m "comment"
现在,所有这些更改都在我的未提交的本地 <branch_name>分支中。我想做的是把这些变化推向上游,但是我想把它推向一个不存在的分支,例如 <branch_name>_test
<branch_name>
<branch_name>_test
我不想把它推到我的 <branch_name>。我怎么能这样做。
git push --set-upstream origin <branch_name>_test
--set-upstream设置本地分支和远程分支之间的关联。你只需要做第一次。在接下来的推动中,你可以这样做:
--set-upstream
git push
如果您还没有设置 origin,请使用:
origin
然后重试上面的命令。
只需将此分支推送到另一个分支名称
git push -u origin localBranch:remoteBranch
如果你不想要 set-upstream,只要
set-upstream
git push origin localBranch:remoteBranch
对于现代的 Git 版本,要使用的命令是:
git push -u origin <branch_name_test>
这将自动设置分支名称,以跟踪从远程和推在一去。
您可以像下面这样将本地分支推送到 新的远程分支:
git push origin master:test
(假设 origin是您的远程,master是您的本地分支名称,test是您希望创建的新远程分支的名称。)
master
test
如果同时希望设置本地分支以跟踪新创建的远程分支,可以使用 -u(在较新版本的 Git 上)或 --set-upstream,因此:
-u
git push -u origin master:test
或者
git push --set-upstream origin master:test
... 将在远程存储库 origin中创建一个新的远程分支,命名为 test,基于本地 master,还有设置本地 master来跟踪它。
首先,让我们注意 git push“想要”另外两个参数,如果您不提供它们,它们将自动生成。因此,基本命令是 git push remote refspec。
git push remote refspec
remote部分通常是琐碎的,因为它几乎总是单词 origin。更棘手的部分是 refspec。最常见的情况是,人们在这里写一个分支名称: 例如,git push origin master。这将使用您的本地分支推送到远程上同名的分支 1,并在必要时创建它。但它不一定是 只是一个分支机构的名称。
remote
refspec
git push origin master
特别是,refspec有两个结肠分隔的部分。对于 git push,左边的部分识别 推什么、 2,右边的部分识别 给遥控器的名称。在这种情况下,左边的部分是 branch_name,右边的部分是 branch_name_test。例如:
branch_name
branch_name_test
git push origin foo:foo_test
在执行推送操作时,可以通过将 -u添加到 git push选项中来告诉 git push同时设置分支的 上游的名字。设置上游名称可以让你的 git 保存 foo_test(或者其他什么名称) ,这样当你在 foo分支上的时候,将来没有参数的 git push就可以尝试在远程上推到 foo_test(在本例中 git 也保存了远程 origin,这样你就不必输入它了)。
foo_test
foo
您只需要传递 -u一次: 它基本上只为您运行 git branch --set-upstream-to。(如果稍后再次传递 -u,它将重新运行上游设置,并根据指示进行更改; 或者您可以自己运行 git branch --set-upstream-to。)
git branch --set-upstream-to
然而,如果你的 git 是2.0或更新版本,并且你没有设置任何特殊的配置,你会遇到同样的事情,让我输入脚注1上面: push.default将被设置为 simple,它将拒绝推送,因为上游的名称不同于你自己的本地名称。如果将 push.default设置为 upstream,git 将停止抱怨ーー但最简单的解决方案只是首先重命名本地分支,以便本地名称和远程名称匹配。(要设置哪些设置,以及/或是否重命名分支,取决于您自己。)
push.default
simple
upstream
更准确地说,git 参考你的 remote.remote.push设置来获得 refspec 的上游部分。如果您在这里没有设置任何内容,那么 违约将使用相同的名称。
remote.remote.push
这不一定是一个分支名。例如,您可以在这里提供 HEAD或提交散列。如果您使用的不是分支名称,那么 梅必须在右侧拼写出完整的 refs/heads/branch(这取决于远程中已经有哪些名称)。
HEAD
refs/heads/branch