git branch命名本地vs远程跟踪

时间:2014-02-10 12:32:02

标签: git branch

我使用git 1.8.3.2。

我使用一个简单的“w1.git”存储库来测试与git相关的东西。

我做了以下

 git clone -- file:///home/rohloff/git/w1.git w1_clone

所以现在我有了以下分支(省略了SHA1和提交消息):

 git branch -avv

 master                   [origin/master]
 remotes/origin/HEAD      -> origin/master
 remotes/origin/master

所以现在我做了

 git branch origin/master

令我完全惊讶的是,有效吗?!

我现在有了

git branch -avv

master                 [remotes/origin/master]
origin/master
remotes/origin/HEAD    -> origin/master
remotes/origin/master

注意“master”现在如何巧妙地指向“遥控器/原点/主人”。

但是,如果我现在尝试使用

创建主题分支
git branch topic origin/master

我得到(并不奇怪)

Warning: refname 'origin/master' is ambiguous.

所以我想知道:

  • 有没有办法告诉git禁止创建“含糊不清”的分支?或者仅仅是我的责任是避免创建这种含糊不清的命名分支?
  • 上面的“git branch topic”:有没有办法明确指出我的意思是哪个分支?

编辑:事实证明以下内容也是允许的:

 git branch origin/master
 git branch remotes/origin/master
 git branch refs/remotes/origin/master

在这三个命令之后,似乎根本没有办法从“origin”远程存储库中引用“master”...

编辑:现在发现这个问题是在git开发人员邮件列表上讨论的(2014年2月15日)。见

http://thread.gmane.org/gmane.comp.version-control.git/242096/focus=242181

只要有人不使用“-f”,建议就是禁止这样的事情。

1 个答案:

答案 0 :(得分:0)

  • 我不相信有一种内置的方法可以防止产生模棱两可的分支。即使git branch有这样的选项,如果你没有遥控器/ origin / foo创建一个本地分支origin / foo,那可能会随着时间而改变。
  • 是的,您可以指定完全限定名称,即refs / heads / origin / master和refs / remotes / origin / master。实际上,您可以删除最初的“refs /”,例如head / origin / master是明确的。