2011-01-10 52 views
48

我使用git作为Subversion的前端(通过git svn)。Git:警告:当使用git-svn时,refname'xxx'是不明确的

因此,对于每个svn trunk /分支,我都有一个名为“remotes/xxx”的远程分支。例如“遥控器/后备箱”,“遥控器/ coolfeature”。

现在我想要为每个远程分支都有一个“默认”本地分支,以将其用于dcommit。问题是,我想这样的分支Subversion的分支的名字命名,如“树干”,“coolfeature”,所以我有以下分支机构的git:

trunk 
coolfeature 
remotes/trunk 
remotes/coolfeature 

的问题是,每次我引用“树干“或”coolfeature“git抱怨分支名称不明确。没什么大不了的,但我感到不舒服。

问题是,我该如何处理该警告,假设只是更名分支不是我想要做的。这种情况的最佳做法是什么?

+3

我不知道。我通过选择不同但相似的名字来避免这种情况。但是,您可以尝试使用`refs/heads/trunk`或者甚至只是`heads/trunk`。我认为这应该工作。 – MatrixFrog 2011-01-10 07:00:36

回答

40

如果您将--prefix=svn/标志传递给git svn clone命令,则所有Subversion分支将被命名为remotes/svn/branchname。如果这是你可以接受的,它修复了“refname不明确”的警告。它也给你指的是远程使用svn分支的一个很好的方式,如例如,如果你想创建一个本地跟踪分支,将是这样的:

$ git checkout -b branchname svn/branchname

在当地的分行则具有相同名称作为远程svn分支,并且没有模棱两可的refname问题。

+19

如何修复已经克隆了`--prefix = svn /`的版本库? – 2011-03-29 11:54:08

+0

我刚刚克隆到一个新的目录,然后从另一个目录中获取本地分支:git fetch ../other_dir branch_name:branch_name ---分支完成对于分支名称也很有用。 – EnigmaCurry 2011-09-21 19:07:32

13

如果你只是想摆脱警告,设置core.warnAmbiguousRefsfalse

git config --global core.warnambiguousrefs false 

如果你想这种行为只针对单一的仓库中,省略--global标志。

+0

我可能在这里违反了所有已知/未知的规则,但是我在一个新的repo上尝试了“git tag -a HEAD -m'开始回购'”,之后我收到了OPs错误消息。在这篇文章中描述的修复允许我继续工作。 – bakoyaro 2013-03-25 12:16:31

1

可能有另一个'trunk'和'coolfeature'作为标签。在这种情况下,git不知道是否引用分支或标记。重命名标签,并检查是否混帐不报告“暧昧”的名字

0

以避免冲突的消息,指当地的分支机构的时候,用head/

例如,冲突的分支点前缀他们topic

$ git diff topic remotes/topic 
warning: reframe 'topic' is ambiguous. 
... 

成为

$ git diff heads/topic remotes/topic 
... 
相关问题