web-dev-qa-db-ja.com

警告:git-svnを使用する場合、refname 'xxx'があい​​まいです

私は(git svnを介して)Subversionのフロントエンドとしてgitを使用しています。

したがって、すべてのsvnトランク/ブランチについて、gitに「remotes/xxx」というリモートブランチがあります。たとえば、「remotes/trunk」、「remotes/coolfeature」。

ここで、dcommitに使用するために、すべてのリモートブランチに1つの「デフォルト」ローカルブランチが必要です。問題は、「trunk」、「coolfeature」などのSubversionブランチにちなんでこのようなブランチに名前を付けたいことです。そのため、gitには次のブランチがあります。

trunk
coolfeature
remotes/trunk
remotes/coolfeature

問題は、「trunk」または「coolfeature」を参照するたびに、gitがブランチ名があいまいであると文句を言うことです。大したことではありませんが、私は不快に感じます。

問題は、ブランチの名前を変更するだけでは自分がやりたいことではないと仮定して、その警告にどう対処できるかです。そのような場合のベストプラクティスは何ですか?

49
Ivan Dubrov

--prefix=svn/フラグをgit svn cloneコマンドに渡すと、すべてのSubversionブランチはremotes/svn/branchnameのような名前になります。これが許容できる場合は、「refname is ambiguous」という警告が修正されます。また、たとえば、ローカルトラッキングブランチを作成する場合、次のようなリモートsvnブランチを参照するための素晴らしい方法を提供します。

$ git checkout -b branchname svn/branchname

ローカルブランチの名前はリモートsvnブランチと同じで、あいまいなrefnameの問題はありません。

40
Jason Voegele

警告を取り除きたい場合は、core.warnAmbiguousRefsfalseに設定します。

git config --global core.warnambiguousrefs false

単一のリポジトリのみにこの動作が必要な場合は、--globalフラグを省略します。

13
max

タグとして別の「トランク」と「coolfeature」を持っている可能性があります。この場合、ブランチまたはタグのどちらを参照しているかはgitにはわかりません。タグの名前を変更し、gitが「あいまいな」名前を報告していないかどうかを確認します

1
Octavi Fornés

競合メッセージを回避するには、ローカルブランチを参照するときに、プレフィックスにheads/を付けます

たとえば、競合するブランチtopic

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

なる

$ git diff heads/topic remotes/topic
...
1
Alex Brown