如何只推送单个 Git 分支(而不推送其他分支)?

问题描述 投票:0回答:6

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

master
feature_x

我想将

feature_x
推送到远程存储库,但我不想将更改推送到
master
分支上。

我的

git push origin feature_x
分支(
feature_x
分支已存在于远程)中的
feature_x
可以工作吗?

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

git git-push
6个回答
417
投票

是的,只需执行以下操作

git checkout feature_x
git push origin feature_x

89
投票

默认情况下

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

git config push.default upstream

这意味着当你执行 git push 时,git 将仅更新当前(签出)分支。

其他有效选项有:

  • nothing
    :不要推送任何东西(错误),除非明确给出a refspec。这主要是针对那些希望通过始终明确表达来避免错误的人。
  • matching
    :推送两端具有同名的所有分支。 (1.7.11 版之前的默认选项)
  • upstream
    :将当前分支推送到其上游 分支。仅当您推送到通常从中提取的同一存储库(即中央工作流程)时,此模式才有意义。 本地和远程分支不需要具有相同的名称
  • tracking
    :已弃用,请使用
    upstream
    代替。
  • current
    :将当前分支推送到接收端同名的远程分支。适用于中央和非中央工作流程。
  • simple
    :[自 Ver 1.7.11 起可用]在集中式工作流程中,像
    upstream
    一样工作,并增加了安全性,如果上游分支的名称与本地分支的名称不同,则拒绝推送。当推送到与您通常拉取的遥控器不同的遥控器时,请按
    current
    操作。这是最安全的选择,适合初学者。这种模式已成为 Git 2.0 中的默认模式。

11
投票

Karthik Bose 的答案之上进行了小更新 - 您可以全局配置 git,以影响所有工作区以这种方式运行:

git config --global push.default upstream

2
投票

更好的答案是

git config push.default current

upstream
可以工作,但当
origin
上没有分支时,您将需要设置上游分支。更改为
current
会自动设置上游分支并立即推送该分支。


1
投票

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

git push origin $(git branch --show-current)

-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 的历史记录。

© www.soinside.com 2019 - 2024. All rights reserved.