tl; dr:git checkout master
はマスターブランチに切り替わらず、エラーも出力もありません。理由はわかりません。他のブランチは正常に動作します。
ブランチdevelopment
とmaster
で構成されるgitリポジトリがあります。デフォルトでブランチdevelopment
をチェックアウトして、リポジトリの新しいクローンを作成します。
$ git clone <REPO-URL> --branch development
$ git branch -a
* development
Origin/HEAD -> Origin/development
Origin/development
Origin/master
$ git show-ref
656c781c2affc26792f857baf8e232de07101535 refs/heads/development
656c781c2affc26792f857baf8e232de07101535 refs/remotes/Origin/HEAD
656c781c2affc26792f857baf8e232de07101535 refs/remotes/Origin/development
cfee1a1761642453edf5d001565f23b50243ff09 refs/remotes/Origin/master
参照マスターが指しているのは正しいです。そのコミットは存在し、私のマスターブランチの最新のコミットです。
これまでのところすべては正常に見えますが、マスターに切り替えようとすると、これが起こっています:
$ git checkout master
$ git branch
* development
チェックアウトからのメッセージなし、エラーなし、何もない、およびブランチは切り替えられません。
これまでに試したこと:
master2
を作成する=>チェックアウトは正常に機能します。git checkout -b master --track Origin/master
=>機能しますが、これはgit checkout master
が自動的に実行する機能であるため、このコマンドを使用する必要はないはずです。さらなるアイデアは?何が欠けていますか?リポジトリは壊れていますか?どうすれば修正できますか?
ソースツリーにフォルダーマスターがある場合も、同じようなものを見ました。残念ながら、値をブランチとして解釈するようにgitに指示する方法が見つかりませんでした。フォルダの名前を変更すると、問題が解決しました。
リポジトリのフォルダー名またはファイル名がブランチ名と同じである場合は、次のようにする必要があります:git checkout xyz --
追加の--
最後に。これは、フォルダー/ファイル名を使用する代わりに、ブランチまたはコミットを使用するようにgitに指示します。
別のstackoverflowの投稿で答えを見つけました: 同じ名前のファイルが存在する場合のGit変更ブランチ
リポジトリ内のローカルマスターブランチは、リポジトリ内の他のローカルブランチと同じです。リポジトリを開発ブランチにクローンしました。これは、唯一のローカルブランチです。したがって、ローカルのmasterブランチにチェックアウトしようとすると、gitはそれが存在しないと言います。
開発とマスターローカルブランチの両方を最初から同じにしたい場合は、次のいずれかを実行できます。
リポジトリをマスターブランチにダウンロードし、ローカル開発ブランチを作成します。
git clone <repo_url>
git checkout -b development
または、レポジトリを開発ブランチにダウンロードして、ローカルマスターブランチを作成します。
git clone <REPO-URL> --branch development
git checkout -b master
受け入れられた回答(フォルダの名前変更)が機能します。そうしたくない場合は、git version 2.14.1.windows.1
でテストした回避策を以下に示します。
問題のフォルダを削除します。
git branch <the branch you had trouble switching to>
を実行する
git branch <your original branch>
を実行する
削除を元に戻すには、git checkout -- .
を実行します。
これで、ブランチと同じ名前のフォルダーがリポジトリ内にある場合でも、問題なく目的のブランチとの間で切り替えることができます。 git branch
を実行すると、ブランチリストにブランチが表示されます。