首页 > 解决方案 > 当分支。.remote 和分支。.merge 由 Git 添加的值?

问题描述

我想知道配置文件中什么时候branch.<branchName>.remotebranch.<branchName>.merge一次被 GIT 填充?(忽略用户编辑配置文件或直接命令添加远程等)

此外,是否可以仅通过使用推送和拉取命令来更改上述内容?

注意:我对如何更改这些值不感兴趣。只是在上面的特定情况下。

标签: git

解决方案


这些没有特定的第一次,只有设置或取消设置它们的命令。因此,必须枚举可以设置它们的每个命令,以及在什么条件下:

  • git checkout

    • 如果在创建时git checkout给出了--track选项,或者为了创建一个的分支名称,git checkout将同时设置两者。
    • 如果git checkout是使用DWIM 模式创建分支,git checkout则在创建该分支时将两者都设置。

      DWIM在这里代表Do What I mean:在这种情况下,您指示git checkout检查一个不存在的分支名称,例如,git checkout develop没有. 扫描您的所有远程跟踪名称,而不是立即失败,例如、、、等等。如果可以找到与您使用的分支名称完全匹配的远程跟踪名称之一,Git 将创建分支,就像您说.developgit checkoutorigin/masterorigin/developfred/masterfred/featuregit checkoutgit checkout --track origin/develop

      请注意,如果您得到两个匹配项(例如,两者都origin/develop存在fred/develop),则此 DWIM 模式将失败,您必须说明git checkout --track origin/develop这是否是您的意思。

    • 所有其他git checkout既不设置也不取消设置配置项的情况。(因此,如果您的问题是“何时为新创建的分支设置”,则答案git checkout在上述情况下。)

  • git branch

    • 与您在创建新分支时git checkout可以给它一个选项一样。--track这里没有 DWIM 模式。如果您使用--track,则根据 <start-point> 参数设置两个配置设置。

    • 您还可以运行git branch --set-upstream-to以设置或更改某些现有分支的当前上游设置。如果它们之前未设置,这会将它们更改为设置(设置为任何值);但是这是否是一次设置取决于您是否更早设置它们并取消设置它们。

    • git branch有一个不推荐使用的--set-upstream选项,它的含义相同,--set-upstream-to但参数的顺序是“向后”,这会导致很多用户错误(这就是不推荐使用的原因)。

    • 您可以git branch --unset-upstream取消设置这两个值。

  • git push

    • 大多数呼吁git push不要触及上游设置。有些人会使用它。但是,如果您在命令中添加-uor--set-upstream标志并且推送成功,将立即根据推送目标远程和引用设置这两个配置项。git pushgit push
  • 当然,git config和/或手动编辑可以更改其中任何一个,尽管您说您不在乎。


推荐阅读