リモートブランチからチェックアウトできない
現象:
リモートブランチ origin/master
から my_branch
を作成する。
$ git checkout -b my_branch origin/master
ブランチが作成できない旨のエラーが発生する。
fatal: 'origin/master' is not a commit and a branch 'my_branch' cannot be created from it
原因:
リモートブランチの情報がフェッチされていない。
対処法:
リモートブランチの一覧を確認して、origin/master
がリモートブランチとして存在するか確認する。
$ git branch -r
origin のブランチ情報を最新の状態に更新する。
$ git fetch --prune origin
参考:
リモートブランチをローカルにチェックアウトしようとするとエラーになる場合の対処法 | Reasonable Code
refname is ambiguous
現象:
参照が曖昧である旨の警告が発生する。
warning: refname 'xxx' is ambiguous.
原因:
同じ名称で参照できるブランチやタグ、コミットなどが存在する。
対処法:
不要なタグやブランチを削除する。
参考:
Git で warning: refname ‘○○’ is ambiguous. 表示時の対処法 | iwb.jp
Git コマンドでブランチ名に問題があるときのエラー | gotohayato.com
refname ‘master’ is ambiguous – Stack Overflow
warning: refname ‘HEAD’ is ambiguous – Stack Overflow
ambiguous argument ‘HEAD’ エラー
現象:
HEAD
が曖昧な引数である旨のエラーが発生する。
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
原因:
最初にコミットする前に HEAD
を参照しようとした。
対処法:
- 最初に必要なコミットを実行する。
git add
を取り消す場合は、git rm --cached -- path/to/file
あるいは、引数なしでgit reset
を実行する。
参考:
ブランチの乖離
[happne_]ローカルのブランチとリモートのブランチが乖離している旨のメッセージが出力される。
Your branch and 'origin/master' have diverged, and have AA and BB different commits each, respectively.
原因:
リモートに対して強制的なプッシュが行われた。
対処法:
ローカルまたはリモートのどちらかのブランチが不要な場合は、強制的に更新することができる。あるいは、両方の履歴が必要な場合は、マージまたはリベースを適用する。
※強制的に更新した場合、保持しなかった方のコミット履歴は失われるので注意する。
ローカルの履歴を捨てて、リモートの履歴に強制的に合わせる。
$ git fetch origin $ git reset --hard origin/master
リモートをローカルにマージする。
$ git merge origin/master
リモートの HEAD の先に、ローカルの変更をリベースする。
$ git rebase origin/master
リベースは git pull
コマンドに --rebase
オプションを付与して実行できる。
$ git pull --rebase
参考:
「Your branch and ‘origin/***’ have diverged」と言われたときの対処 – Qiita
リモートブランチとローカルブランチで差分が出ちゃった | 箱のプログラミング日記。
master branch and ‘origin/master’ have diverged, how to ‘undiverge’ branches’? – Stack Overflow