145

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

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

在分支 amd_qlp_tester

您的分支领先于 'origin/amd_qlp_tester' 5 次提交。

ETC...

我的分支名称是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

4 回答 4

200

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

git push origin branchName

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

git push origin localBranchName:remoteBranchName
于 2018-06-12T07:04:17.307 回答
108

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

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

于 2013-10-03T08:36:47.123 回答
10

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

就您而言,Petr Mensik 的答案是(嗯,“a”)正确的答案。原因如下:

该命令在您的文件中查找命名的“远程”(例如,)。配置文件列出:git push remote.git/configorigin

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

当你第一次克隆 repo 时——无论是什么时候——git 都会为其中的一些设置默认值。URL 是您从中克隆的任何内容,其余的,无论是否设置,都是“合理”的默认值......或者,嗯,吗?

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

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

git push origin

甚至:

git push

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

至于origin/amd_qlp_tester首先的名称:这实际上是一个本地实体(保存在您的存储库中的名称),即使它被称为“远程分支”。这是 git 对“那里在哪里”的最佳猜测amd_qlp_tester。Git会尽可能更新它

于 2013-10-03T09:06:22.023 回答
3

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

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

注意 -u选项是的简短版本--set-upstream- 它们是相同的。

于 2019-04-09T20:12:34.447 回答