为什么 [分支"development"] 在 .git/config 中不存在?



我的问题是为什么下面的.git/config文件没有[branch "development"]部分;添加这样的部分有什么作用;我如何测试到底发生了什么,就像虚拟文件一样?

以下是详细信息:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = test@test:test.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master

我有一个硕士和开发分支。正如预期的那样,当我git checkout development时,我可以在开发中进行不在主管理中的更改。稍后,我可以将开发合并回主数据库。

我很困惑为什么没有在.git/config中配置开发分支.

我的猜测是你没有与development关联的上游/远程,因此不需要配置条目。如果使用 git push origin development -u 将其推送到源,则应在配置中看到它。

我很困惑为什么没有在.git/config中配置开发分支.

您根本没有给定分支的上游或跟踪定义。


为什么没有跟踪分支或上游?

它实际上取决于您的 git 版本,因为它已在 git 版本 2.0 中更新。

如果您在旧版本的 git (<2.0) 中克隆/创建了存储库,这就是您没有上游/跟踪分支的原因。

您可以在此处阅读所有相关信息:https://git.kernel.org/cgit/git/git.git/tree/Documentation/RelNotes/2.0.0.txt


git push [$there]没有说要推送什么时,我们使用了 到目前为止的传统matching语义(您所有的分支都已发送 到远程,只要已经有同名的分支 那边)。 在 Git 2.0 中,默认值现在是simple语义, 它推动:

  • 将当前分支转换为具有相同名称的分支,并且仅 当当前分支设置为与该遥控器集成时 分支,如果您推送到与从中获取的同一远程;或

  • 仅将当前分支转换为具有相同名称的分支(如果) 正在推送到一个不是您通常从中获取的遥控器。

您可以使用配置变量push.default更改 这。 如果您是想继续使用 matching语义,您可以将变量设置为 matching ,对于 例。 阅读文档以了解其他可能性。

最新更新