git push 推送当前分支 与 config中的push default

  • git push origin与git push -u origin master的区别

    • $ git push origin

      • 上面命令表示,将当前分支推送到origin主机的对应分支。 
      • 如果当前分支只有一个追踪分支,那么主机名都可以省略。 
    • $ git push

      • 如果当前分支与多个主机存在追踪关系,那么这个时候-u选项会指定一个默认主机,这样后面就可以不加任何参数使用git push。
    • $ git push -u origin master

      • 上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
    •  不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。
       
  • Git 2.0 更改 push default 为‘simple’

    • 如果你最近更新了 Git,你可能会在执行 git push 时看到如下消息:
warning: push.default is unset; its implicit value is changing in 
Git 2.0 from 'matching' to 'simple'. To squelch this message 
and maintain the current behavior after the default changes, use: 

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use: 

  git config --global push.default simple
  • Matching

    • ‘matching’ 参数是 Git 1.x 的默认行为,其意是如果你执行 git push 但没有指定分支,它将 push 所有你本地的分支到远程仓库中对应匹配的分支。
  • Simple

    • 而 Git 2.x 默认的是 simple,意味着执行 git push 没有指定分支时,只有当前分支会被 push 到你使用 git pull 获取的代码。
  • 修改默认设置

    • 从上述消息提示中的解释,我们可以修改全局配置,使之不会每次 push 的时候都进行提示。对于 matching 输入如下命令即可:
      • git config --global push.default matching
    • 而对于 simple ,请输入:
      • git config --global push.default simple

转载于:

https://www.cnblogs.com/zhouj850/p/7260558.html

https://www.oschina.net/news/45585/git-2-x-change-push-default-to-simple

<think>我们讨论的是Git操作问题,但要求用C语言代码回答。然而,问题本身是关于Git的,C语言无关。根据要求,我们只能提供C语言代码,但这个问题无法用C语言代码回答。因此,我们需要调整策略:我们可以用C语言写一个模拟Git操作的简单程序?但是这个问题是“推送所有分支”的操作指导,并不需要代码。但是,请注意用户要求:回答流程是“回答问题-给出解释”,然后提出相关问题。而且代码只能是C语言代码。然而,这个问题不是关于C语言的,而是关于Git的。因此,我们需要重新理解问题:用户可能是在C语言项目开发中遇到的Git问题?那么我们可以从C语言项目开发的角度来回答Git问题,但无法用C语言代码来回答Git操作问题。由于问题要求只能提供C语言代码,而这个问题无法用C语言代码解决,我们可以这样处理:1.首先,我们回答Git推送分支的问题:是否需要推送所有分支?2.然后,我们尝试用C语言写一个程序,这个程序可以调用系统命令来执行Git推送操作(但注意,这只是一个示例,实际中我们可能不会这样做)。3.最后,按照要求提出相关问题。但是,请注意,用户的问题是一个操作问题,我们首先应该回答操作问题,然后再考虑是否用代码演示。回答:在Git中,推送时并不需要推送所有分支。通常,我们使用`git push`命令默认只推送当前分支。但是,你可以通过配置或者命令参数来设置推送行为。默认情况下,`git push`会推送当前分支到远程仓库中同名的分支。如果你想推送所有分支,可以使用`git push--all`命令。但是,一般情况下,我们只推送需要共享的分支(如master/main,develop等),而不会推送所有分支(特别是那些临时分支)。解释:1.如果你没有进行过配置,那么`git push`只会推送当前分支。2.你可以通过配置`push.default`来改变默认行为。例如,设置为`simple`(默认值)表示只推送当前分支,并且远程分支本地相同;设置为`matching`则会推送所有本地远程同名的分支(在Git2.0之前是默认行为)。3.使用`gitpush --all`可以一次推送所有分支(不管是否同名),但通常不推荐这样做,因为可能会推送很多不必要的分支。由于问题要求提供C语言代码,我们可以写一个简单的程序,使用`system()`函数来执行Git命令。但是,请注意,这只是一个示例,实际中我们更倾向于直接在命令行中执行Git命令。示例代码:一个C程序,用于执行Git推送当前分支的操作。注意:这个程序只是演示,实际使用中需要谨慎,因为系统命令的执行可能会有安全风险。代码功能:让用户选择是推送当前分支还是所有分支,然后执行相应的Git命令。但是,请注意:这个程序需要运行在支持Git和命令行操作的环境中。</think>### Git推送时需要推送所有分支吗? 在Git中,**不需要**每次推送时都推送所有分支Git的默认行为是只推送当前分支(或通过配置指定的分支)。以下是详细解释和操作建议: --- #### 原因解决方案: 1. **默认行为** Git的`push.default`配置决定了推送行为: - `simple`(Git 2.0+默认):只推送**当前分支**到远程同名分支。 - `upstream`:推送到`git branch --set-upstream-to`指定的分支。 - `current`:推送当前分支到远程同名分支(若不存在则创建)。 - `matching`:推送**所有本地远程同名分支**(已弃用)。 **检查配置**: ```bash git config --global push.default ``` 2. **手动指定推送范围** - 推送当前分支:`git push` - 推送特定分支:`git push origin branch-name` - 推送所有分支:`git push --all origin`(谨慎使用!) 3. **推荐实践** - 只推送必要的分支(如`main`、`dev`),避免推送临时分支(如`experiment`)。 - 通过`git branch -a`查看分支,确保远程仓库整洁。 --- #### C语言示例:模拟Git分支推送逻辑 以下代码模拟Git分支选择推送的逻辑(仅演示,实际Git操作需调用命令行): ```c #include <stdio.h> #include <string.h> #define MAX_BRANCHES 5 // 模拟分支结构 typedef struct { char name[50]; int is_tracked; // 是否已跟踪远程分支 } GitBranch; // 模拟推送操作 void push_branch(const char* branch_name) { printf("执行: git push origin %s\n", branch_name); } int main() { GitBranch branches[MAX_BRANCHES] = { {"main", 1}, {"dev", 1}, {"experiment", 0}, // 未跟踪的临时分支 {"feature/login", 0}, {"hotfix", 1} }; char current_branch[] = "dev"; printf("当前分支: %s\n", current_branch); // 只推送当前分支(默认行为) push_branch(current_branch); // 额外推送其他必要分支(可选) printf("\n是否需要推送所有分支? (y/n): "); if (getchar() == 'y') { for (int i = 0; i < MAX_BRANCHES; i++) { if (branches[i].is_tracked) { push_branch(branches[i].name); } } } return 0; } ``` **输出示例**: ``` 当前分支: dev 执行: git push origin dev 是否需要推送所有分支? (y/n): n ``` --- ### 关键总结: - **不必推送所有分支**:默认只推送当前分支,避免污染远程仓库。 - **风险提示**:`git push --all`可能泄露敏感分支(如含密码的测试分支)。 - **最佳实践**: 1. 用`git push -u origin branch-name`首次推送并建立跟踪。 2. 后续只需`git push`推送当前分支。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值