TL;DR: Ashutosh Jindalの コメントとして、タグを保存して削除します(「git でタグの名前を変更しますか?」を参照):
git tag tag-master master
git tag -d master
元の答え:
私が目にするソースのほとんど (この FAQなど) は、同じ原因を指摘しています。
ローカルブランチをチェックアウトしようとすると、
warning: refname 'branch-name' is ambiguous
これは、リモート タグと同じ名前のローカル ブランチを作成した場合に発生する可能性があります。
Git はローカル ブランチをチェックアウトする必要がありますが、代わりにタグをチェックアウトしようとしており、混乱しています。
いくつかのツリーの最初のインポートは、同じ名前のブランチとタグが含まれていたため、問題がありました。タグの名前を変更することで、これらの問題の多くに対処してきました。
あなたの場合、リモートはありませんが、ブランチのような名前のローカル タグで十分です。
あいまいさはgitrevisionで指定されています
<refname>
、例えばmaster
、、heads/master
refs/heads/master
シンボリック参照名。たとえばmaster
、通常、 によって参照されるコミット オブジェクトを意味しますrefs/heads/master
。
と の両方を持っている場合は、どちらheads/master
を意味するtags/master
かを明示的heads/master
に git に伝えることができます。
あいまいな場合<refname>
、次のルールで最初に一致したものを取得することで、a のあいまいさが解消されます。
存在する場合$GIT_DIR/<refname>
、それはあなたが意味することです (これは通常HEAD
、 、FETCH_HEAD
、ORIG_HEAD
、MERGE_HEAD
およびにのみ役立ちCHERRY_PICK_HEAD
ます)。
- それ以外の場合は、
refs/<refname>
存在する場合。
- それ以外の場合は、
refs/tags/<refname>
存在する場合。
- それ以外の場合は、
refs/heads/<refname>
存在する場合。
- それ以外の場合は、
refs/remotes/<refname>
存在する場合。
- それ以外の場合は、
refs/remotes/<refname>/HEAD
存在する場合。
したがって、リポジトリのどこにあるかmaster
を確認してください。
そしてgit checkout heads/master
、常に機能します。
警告: デフォルトでは、これはDETACHED HEAD モードでブランチをチェックアウトします。「明示的な ' ' を使用すると、切り離された HEAD が返されるのはなぜgit checkout
refs/heads/branch
ですか?」を参照してください。
それを回避し、依然として明確な参照を使用するには、次のように入力します。
git checkout -B master heads/master