268

我正在开发本地 git 存储库。有两个分支,masterfeature_x

我想推feature_x送到远程仓库,但我不想推送master分支上的更改。

git push origin feature_x来自我的分支feature_xfeature_x远程分支已经存在)的工作吗?

我不想在我的盒子上测试这个,因为我现在无法推送到大师。

4

6 回答 6

398

是的,只需执行以下操作

git checkout feature_x
git push origin feature_x
于 2009-05-04T13:57:28.967 回答
86

默认情况下git push更新所有远程分支。但是您可以配置 git 以仅将当前分支更新到其上游。

git config push.default upstream

这意味着当您执行 git push 时,git 只会更新当前(签出)分支。

其他有效选项是:

  • nothing:除非明确给出 refspec,否则不要推送任何内容(错误输出)。这主要适用于希望通过始终明确来避免错误的人。
  • matching:将所有具有相同名称的分支推到两端。(Ver 1.7.11 之前的默认选项)
  • upstream:将当前分支推送到其上游分支。仅当您推送到您通常会从中提取的同一存储库(即中央工作流程)时,此模式才有意义。本地和远程分支无需同名
  • tracking: 已弃用,upstream改为使用。
  • current:将当前分支推送到接收端的同名远程分支。适用于中央和非中央工作流程。
  • simple:[自 Ver 1.7.11 起可用] 在集中式工作流程中,upstream如果上游分支的名称与本地分支的名称不同,则可以使用附加的安全性拒绝推送。当推送到与您通常从中拉出的遥控器不同的遥控器时,作为current. 这是最安全的选择,适合初学者。此模式已成为 Git 2.0 中的默认模式。
于 2012-05-31T07:51:11.530 回答
10

在Karthik Bose 的回答之上的小更新- 您可以全局配置 git,以影响所有工作区的行为方式:

git config --global push.default upstream
于 2014-03-28T20:24:48.453 回答
0

更好的答案将是

git config push.default current

upsteam可以,但是当您没有分支时,origin您将需要设置上游分支。将其更改为current将自动设置 upsteam 分支并立即推送分支。

于 2021-02-11T07:04:42.383 回答
-1

无论您有什么配置,都要推送您当前的分支:

git push origin $(git branch --show-current)
于 2021-10-29T12:33:52.307 回答
-3

因此,假设您有一个本地分支 foo、一个名为 origin 的远程分支和一个远程分支 origin/master。

要将 foo 的内容推送到 origin/master,首先需要设置它的上游:

git checkout foo
git branch -u origin/master

然后您可以使用以下命令推送到该分支:

git push origin HEAD:master

在最后一个命令中,您可以添加 --force 以将 origin/master 的整个历史记录替换为 foo 的历史记录。

于 2015-01-07T00:14:53.843 回答