49

我使用 git 作为 Subversion 的前端(通过 git svn)。

因此,对于每个 svn 主干/分支,我在 git 中都有一个名为“remotes/xxx”的远程分支。例如“遥控器/主干”、“遥控器/coolfeature”。

现在我希望每个远程分支都有一个“默认”本地分支,用于 dcommit。问题是我希望这样的分支以 Subversion 分支命名,比如“trunk”、“coolfeature”,所以我在 git 中有以下分支:

trunk
coolfeature
remotes/trunk
remotes/coolfeature

问题是每次我引用“主干”或“酷特性”时,git 都会抱怨分支名称不明确。没什么大不了的,但我觉得不舒服。

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

4

4 回答 4

40

如果将--prefix=svn/标志传递给git svn clone命令,那么所有 Subversion 分支都将命名为remotes/svn/branchname. 如果您可以接受,它会修复“refname is ambiguous”警告。它还为您提供了一种引用远程 svn 分支的好方法,例如,如果您想创建一个本地跟踪分支,它将类似于:

$ git checkout -b branchname svn/branchname

然后本地分支与远程 svn 分支具有相同的名称,并且没有不明确的 refname 问题。

于 2011-03-24T21:11:28.890 回答
13

如果您只想摆脱警告,请设置core.warnAmbiguousRefsfalse

git config --global core.warnambiguousrefs false

如果您希望此行为仅用于单个存储库,请省略--global标志。

于 2011-01-10T10:20:40.847 回答
1

您可能有另一个“trunk”和“coolfeature”作为标签。在这种情况下,git 不知道您指的是分支还是标签。重命名标签并检查 git 是否不报告“模糊”名称

于 2011-09-23T09:21:40.397 回答
1

为避免冲突消息,在引用本地分支时,在它们前面加上heads/

例如,冲突的分支topic

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

变成

$ git diff heads/topic remotes/topic
...
于 2014-03-08T19:09:58.893 回答