【问题标题】:Branch name clashes when pushing推送时分支名称冲突
【发布时间】:2017-09-02 10:47:32
【问题描述】:

我认为我知道的

当我从远程存储库克隆或获取时,远程的名称会作为从该远程导入的分支名称的前缀。
例如,如果远程在我的存储库中称为origin,那么在克隆远程的master 分支后在我的存储库中称为origin/master

此行为确保导入的分支与我的存储库中已存在的分支之间永远不会发生名称冲突(无论它们是在本地创建的还是从其他存储库导入的)。

我不知道的(即我的问题)

当我推送到远程存储库时,我的存储库名称(在远程存储库中)是否会添加到被推送的分支名称的前缀?

如果不是,如何避免分支名称冲突?

【问题讨论】:

标签: git git-push git-clone git-checkout git-fetch


【解决方案1】:

我认为我知道的

当我从远程存储库克隆或获取时,远程的名称是前缀到从这个远程导入的分支的名称。

例如,如果远程在我的存储库中被称为origin,那么在克隆远程的主分支后,在我的存储库中称为origin/master

不完全是这样的。
当你克隆一个 git 存储库 git 时,你会得到所有分支的 reference,但只有 master 被签出

每次你签出一个分支时,git 添加一个 track 分支到它

当我推送到远程存储库时,我的存储库名称(在远程存储库中)是否会作为被推送分支名称的前缀?

每当您键入 push git 时,请使用名为 refspec 的内部机制

refspec

refspec 的格式是可选的+,后跟<src>:<dst>,其中<src> 是远程端引用的模式,<dst> 是这些引用的位置在本地编写。
+ 告诉 Git 更新引用,即使它不是快进。

更多阅读:
https://www.atlassian.com/git/tutorials/refs-and-the-reflog#refspecs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2023-02-10
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多