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/masterrefs/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 checkoutrefs/heads/branchですか?」を参照してください。
それを回避し、依然として明確な参照を使用するには、次のように入力します。
git checkout -B master heads/master