git推送到特定分支

时间:2013-10-03 08:25:50

标签: git version-control push

即使在阅读了这个问题之后:git-push-current-branch,我仍然很难搞清楚如何编写我的git push命令。正如问题链接中所提到的,文档中并不清楚。

我想用我的'真实世界'例子。以下是我在分支顶层执行git status命令时看到的内容:

  

在分支amd_qlp_tester

上      

你的分支在5次提交之前超过'origin / amd_qlp_tester'。

     

等...

所以我的分支名称是amd_qlp_tester,但是它从主分支“分支”(如果由于我的SVN背景,我的条款有误)。但是还有名称`origin / amd_qlp_testser'

那我怎么说出我的推送命令?

是否是以下任何一种:

git push origin/amd_qlp_tester?
git push origin amd_qlp_tester?
git push amd_qlp_tester?
git push origin?
git push?

4 个答案:

答案 0 :(得分:63)

git push origin amd_qlp_tester将为您效劳。如果只键入git push,则当前分支的远程值是默认值。

push的语法如下所示 - git push <remote> <branch>。如果查看.git/config文件中的远程,您将看到一个条目[remote "origin"],它指定了存储库的URL。因此,在命令的第一部分,您将告诉Git在哪里找到此项目的存储库,然后您只需指定一个分支。

答案 1 :(得分:30)

如果您的本地分支和远程分支是相同的名称,那么您可以这样做:

git push origin branchName

当您的本地和远程分支名称不同时,您可以这样做:

git push origin localBranchName:remoteBranchName

答案 2 :(得分:8)

您链接的问题的答案都是关于配置git,以便您可以输入非常短的git push命令并让它们执行您想要的任何操作。哪个好,如果你知道你想要什么以及如何在Git-Ese拼写,但你是git的新手! : - )

在您的情况下,Petr Mensik's answer是(正好,“a”)正确的。原因如下:

命令git push remote位于.git/config文件中,以查找名为“remote”(例如origin)。配置文件列出:

  • 远程“生活”的地方(URL-wise)(例如,ssh://hostname/path
  • 如果不同,推送去吧
  • 如果您没有说出要推送的分支
  • ,会推动什么
  • 运行git fetch remote
  • 时获取的内容

当你第一次克隆回购时 - 每当git为其中一些设置默认值时。 URL是你从中克隆的,其余的,如果设置或未设置,都是“合理的”默认值......或者,嗯,他们?

这些问题是人们随着时间的推移改变了他们对“合理”的看法。所以现在(取决于你的git版本以及你是否详细配置了东西),git可能会打印很多关于将来更改默认值的警告。添加“分支推送”的名称 - amd_qlp_tester - (1)将其关闭,(2)仅推送一个分支。

如果你想更方便地推动,你可以用:

git push origin

甚至:

git push

但是,这是否符合您的要求,取决于您是否同意“早期git作者”原始默认值是合理的,或者“后来的git作者”认为原始默认值是不合理的。因此,当您想要完成所有配置工作(最终)时,请查看您链接到的问题(和答案)。

首先是名称origin/amd_qlp_tester:它实际上是一个本地实体(保存在您的仓库中的名称),即使它被称为“远程分支”。这是git最好的猜测“amd_qlp_tester在那里”。 Git updates it when it can

答案 3 :(得分:0)

我想添加一个更新的答案-现在我已经使用git一段时间了,我发现我经常使用以下命令进行任何推送(以原始问题为例):

  • git push origin amd_qlp_tester-推送到原点中名为amd_qlp_tester的分支
  • git push -u origin amd_qlp_tester-与上一个相同,但是将上游链接设置为将本地分支链接到远程分支,以便下次您可以使用git push/pull(如果尚未链接)(只需执行一次) )。
  • git push-设置上游后,就可以使用此较短的版本。

注意 -u选项是--set-upstream的缩写-它们是相同的。