Git 推送到特定的分支

即使在阅读了这个问题: Git 推进电流分支之后,我仍然很难弄清楚应该如何编写 git push命令。正如问题链接中提到的,从文档中看不清楚。

我想用我的“真实世界”的例子。下面是我在分支顶层运行 git status命令时看到的情况:

在分支 amd _ qlp _ tester 上

您的分支比‘ source/amd _ qlp _ tester’领先5次提交。

等等。

我的分支名称是 amd_qlp_tester,但它是从主分支“分支”出来的(如果我的术语错了,那是因为我的 SVN 背景)。但是还有一个名字 origin/amd_qlp_testser

那么我该如何表达我的 push 命令呢?

是以下任何一种吗?

git push origin/amd_qlp_tester
git push origin amd_qlp_tester
git push amd_qlp_tester
git push origin
git push
399148 次浏览

git push origin amd_qlp_tester会为你工作。如果只键入 git push,则当前分支的远程是默认值。

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

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

在您的例子中,Petr Mensik 的回答是(好吧,“ a”)正确的。原因如下:

命令 git push remote.git/config文件中寻找命名的“ remote”(例如,origin)。配置文件列出:

  • 远程“生活”在哪里(URL 方向)(例如,ssh://hostname/path)
  • 如果不同,推力会去哪里
  • 如果你不说要推动哪个分支,那么什么会被推动
  • 运行 git fetch remote时获取的内容

当您第一次克隆回购时ーー无论何时ーー git 为其中一些设置了默认值。URL 是你从中克隆出来的,其余的,如果设置或未设置,都是“合理的”默认值... 或者,嗯,它们?

问题在于,随着时间的推移,人们已经改变了对什么是“合理”的看法。因此,现在(取决于您的 git 版本以及您是否已经详细配置了内容) ,git 可能会打印大量关于未来默认值变化的警告。添加“ push”分支的名称ーー amd_qlp_testerーー(1)关闭它,(2)只推动一个分支。

如果你想推得更方便,你可以这样做:

git push origin

甚至:

git push

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

至于 origin/amd_qlp_tester这个名字: 它实际上是一个本地实体(保存在你的回购中的名字) ,尽管它被称为“远程分支”。这是 Git 对“ amd_qlp_tester在那里”的最佳猜测。Git 能更新的时候就更新.

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

git push origin branchName

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

git push origin localBranchName:remoteBranchName

我想添加一个更新的答案-现在我已经使用 git 一段时间了,我发现我经常使用以下命令来做任何推(使用最初的问题作为例子) :

  • 推送到位于远程分支 origin上的远程分支 amd_qlp_tester
  • git push -u origin amd_qlp_tester-与上一个相同,但是设置了连接本地分支到远程分支的上游,这样下次如果还没有连接的话就可以直接使用 git push/pull(只需要连接一次)。
  • git push-一旦你设置了上游,你可以只使用这个较短的版本。

注意 -u选项是 --set-upstream的短版本-它们是一样的。