web-dev-qa-db-ja.com

git checkout masterがブランチを切り替えません-リポジトリが壊れていますか?

tl; drgit checkout masterはマスターブランチに切り替わらず、エラーも出力もありません。理由はわかりません。他のブランチは正常に動作します。

ブランチdevelopmentmasterで構成される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

チェックアウトからのメッセージなし、エラーなし、何もない、およびブランチは切り替えられません。

これまでに試したこと:

  • 同じコミットから2番目のブランチmaster2を作成する=>チェックアウトは正常に機能します。
  • ローカルとOriginの両方でブランチマスターを削除して再作成する=>再びチェックアウトは不可能
  • git checkout -b master --track Origin/master =>機能しますが、これはgit checkout masterが自動的に実行する機能であるため、このコマンドを使用する必要はないはずです。
  • 作品をコミットしてプッシュしますが、チェックアウトの問題は変わりません
  • いくつかのgitバージョン(1.9、2.2)とマシン(linux、windows)を試しましたが、どこでも問題が発生します。

さらなるアイデアは?何が欠けていますか?リポジトリは壊れていますか?どうすれば修正できますか?

19
schrom

ソースツリーにフォルダーマスターがある場合も、同じようなものを見ました。残念ながら、値をブランチとして解釈するようにgitに指示する方法が見つかりませんでした。フォルダの名前を変更すると、問題が解決しました。

17
fhopf

リポジトリのフォルダー名またはファイル名がブランチ名と同じである場合は、次のようにする必要があります:git checkout xyz --追加の-- 最後に。これは、フォルダー/ファイル名を使用する代わりに、ブランチまたはコミットを使用するようにgitに指示します。

別のstackoverflowの投稿で答えを見つけました: 同じ名前のファイルが存在する場合のGit変更ブランチ

24
Nick

リポジトリ内のローカルマスターブランチは、リポジトリ内の他のローカルブランチと同じです。リポジトリを開発ブランチにクローンしました。これは、唯一のローカルブランチです。したがって、ローカルのmasterブランチにチェックアウトしようとすると、gitはそれが存在しないと言います。

開発とマスターローカルブランチの両方を最初から同じにしたい場合は、次のいずれかを実行できます。

リポジトリをマスターブランチにダウンロードし、ローカル開発ブランチを作成します。

git clone <repo_url>
git checkout -b development

または、レポジトリを開発ブランチにダウンロードして、ローカルマスターブランチを作成します。

git clone <REPO-URL> --branch development
git checkout -b master
3
Bustikiller

受け入れられた回答(フォルダの名前変更)が機能します。そうしたくない場合は、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を実行すると、ブランチリストにブランチが表示されます。

0
BobbyA