我使用git作为Subversion的前端(通过git svn)。
因此,对于每个svn trunk / branch,我在git中有一个名为“remotes / xxx”的远程分支。例如“remotes / trunk”,“remotes / coolfeature”。
现在我想为每个远程分支设置一个“默认”本地分支,将其用于dcommit。问题是我希望这些分支以Subversion分支命名,比如“trunk”,“coolfeature”,所以我在git中有以下分支:
trunk
coolfeature
remotes/trunk
remotes/coolfeature
问题是,每当我引用“trunk”或“coolfeature”时,git抱怨分支名称含糊不清。没什么大不了的,但我觉得不舒服。
问题是,我怎么能处理这个警告,假设简单地重命名分支不是我想要做的。这种情况的最佳做法是什么?
答案 0 :(得分:40)
如果将--prefix=svn/
标志传递给git svn clone
命令,则所有Subversion分支都将命名为remotes/svn/branchname
。如果您可以接受,则会修复“refname is ambiguous”警告。它还为您提供了一种引用远程svn分支的好方法,例如,如果要创建本地跟踪分支,它将类似于:
$ git checkout -b branchname svn/branchname
然后本地分支与远程svn分支同名,并且没有模糊的refname问题。
答案 1 :(得分:13)
如果您只想摆脱警告,请将core.warnAmbiguousRefs
设为false
:
git config --global core.warnambiguousrefs false
如果您只想对单个存储库执行此操作,请省略--global
标记。
答案 2 :(得分:1)
你可能有另一个'trunk'和'coolfeature'作为标签。在这种情况下,git不知道您是否引用分支或标记。重命名标记并检查git是否报告“模糊”名称
答案 3 :(得分:1)
为避免冲突消息,在引用本地分支时,请在其前面添加heads/
例如,冲突的分支topic
$ git diff topic remotes/topic
warning: reframe 'topic' is ambiguous.
...
变为
$ git diff heads/topic remotes/topic
...