リモートブランチにプッシュできない、ブランチに解決できない


110

リポジトリをBitbucketまたはGithubから移行しました。これは重要ではないと思いますが、それだけが異なります...少しの間、2つのリモートをセットアップしました。

origin: bitbucket
github: github

次に、両方を削除し、オリジンをgithubにポイントしました。

git remote remove origin
git remote remove github
git remote add origin https://github....

開発ブランチのプッシュテスト:

git push origin develop

最新のものすべて、わかりました。

通常どおり、いくつかの作業のために新しいブランチを作成します。

git checkout -b Feature/Name

1つまたは2つのファイルを更新します。リモートにプッシュしようとします:

git push origin Feature/Name

これはエラーになります:

致命的:機能/名前をブランチに解決できません

この問題をオンラインで検索し、HEADが正しいことを確認するための情報を探します。ブランチ名の大文字と小文字が正しいことを確認するためのものもあります(ただし、現時点ではブランチはまだリモートに存在しません)。解決できません。

このコマンドを実行しました:

git push --all -u

これはFeature/Namegithubへの私のブランチを手に入れましたが、それでも以前と同じ動作が見られます:

git push origin develop
git push origin Feature/Name

最初は機能し、2番目は同じエラーをスローします。

このエラーが発生する理由を理解できません。何か案は?


1
あなたが作ったとき、あなたはどの枝にいましたFeature/Nameか?あなたは確かに Feature/Name存在し、それはチェックアウトされたブランチですか?に確認してくださいgit branch
シュヴェルン2016年

@Schwern-3つのブランチ(ローカルとリモート)のみが存在しました:開発、テスト、マスター。ブランチがクリーンアップされ、開発のためにマージされたら、ローカルで(該当する場合はリモートで)削除します。3つしかなかったのは確かです。しばらくプロジェクトを開いていないので、最初に行ったのは、ルーズなブランチがないことを確認して確認することでした。
jleach

ローカルに存在することgit branchを確認Feature/Nameするために実行したということですか?GUIやIDEを信用しないでください。また、あなたはケースを正しく理解しましたか?
シュヴェルン2016年

いかがgit push origin Feature/Name:Feature/Nameですか?
ElpieKay 2016年

今、私は怒っています...それが最初の場所でうまくいかなかった理由がわかりませんが、使用した後git push --all -u、githubに新しいブランチがありますが、それでもローカルからプッシュできませんでしたよね?これが何が起こったかです...実際のブランチ名SQLMigration/ReportFixesは、githubには何がありますかSqlMigration/ReportFixes。だから、私は今できますgit push origin SqlMigration/ReportFixes-gittは私のために大文字と小文字を変更しますか?ああ。
jleach

回答:


376

私もこの問題を抱えていて、それが私を夢中にさせていました。のようなものfeature/nameがありましたが、git branch -a見せてくれましたFEATURE/name。ブランチの名前を変更し、ブランチを削除して再作成しても、何も機能しませんでした。最終的にそれを修正したもの:

に入る .git/refs/heads

あなたは、表示されますFEATUREフォルダを。名前をに変更しfeatureます。


4
これが正解でした。Windowsでgitbashを使用していて、feature / some-featureおよびFeature / some-featureを作成していました。
Dylan McCurry 2017

これは正解としてマークする必要があります。私を助けた。ありがとう!
GuiDoody 2017

21
この答えはビールのおかげです!:D
Vojta 2017

1
うわー、いいキャッチ。時間を大幅に節約できました。よろしくお願いします!
Piyush

2
@ペグ-完了。私がこの問題を抱えて久しぶりにこの答えがあったとは思わないが、それは人気のあるもののようです。
jleach

30

私自身のテストとOPのコメントに基づいて、私はある時点でブランチ名の大文字と小文字の区別に誤りがあると思います。

まず、OPはOS XやWindowsなどの大文字と小文字を区別しないオペレーティングシステム上にあると思います。それから彼らはこのようなことをしました...

$ git checkout -b SQLMigration/ReportFixes
Switched to a new branch 'SQLMigration/ReportFixes'

$ git push origin SqlMigration/ReportFixes
fatal: SqlMigration/ReportFixes cannot be resolved to branch.

大文字と小文字の違いに注意してください。また、名前を入力した場合とはエラーが大きく異なることに注意してください。

$ git push origin SQLMigration/ReportFixme
error: src refspec SQLMigration/ReportFixme does not match any.
error: failed to push some refs to 'git@github.com:schwern/testing123.git'

Githubはファイルシステムを使用してブランチ名を格納するため、を開こうとします.git/refs/heads/SqlMigration/ReportFixes。ファイルシステムは大文字と小文字を区別しないため、正常に開くこと.git/refs/heads/SqlMigration/ReportFixesができますが、ブランチ名を大文字と小文字を区別して比較しようとすると混乱し、一致しません。

ローカルブランチSQLMigration/ReportFixesとリモートブランチがどのような状態になったSqlMigration/ReportFixesかはわかりません。Githubがリモートブランチの名前をいじったとは思いません。最も簡単な説明は、プッシュアクセス権を持つ他の誰かがリモートブランチ名を変更したことです。それ以外の場合、ある時点で、タイプミスを使用してリモートを作成することができました。シェルの履歴を確認すると、おそらくhistory | grep -i sqlmigration/reportfixes大文字小文字を誤って入力したコマンドを見つけることができるかもしれません。


OS Xでブランチ名の文字の大文字と小文字を変更したときにこの問題に遭遇しました。それらを元に戻すと問題が解決しました。
Steven C. Howell

これは、前のブランチ、たとえばAM-xxx / some_branchがあり、別のAM-XXX / another_branchを作成した場合にも発生する可能性があります。gitはローカルで異なるケースを許可し、2つをリモートでペアリングできません。
timpwbaker 2018年

はい、することが可能であるチェックアウト間違った大文字小文字混合ではなく、チェックインするだけの厄介..
javadba

12

Gitを使用すると、現在のブランチを別の大文字小文字でチェックアウトでき、リモートで参照を見つけることができません。

難しい方法を見つけました。


1
これは私の問題でした。私はすばやく実行> git branchして、ブランチの横に*があることを確認することをお勧めします。
Andy Danger Gagne、

これは私にも起こりました。@AndyDangerGagne、あなたがこれを提案してくれてうれしいです-私がいたブランチの隣に*がなかったので、今回は小文字でもう一度チェックアウトしました。
Cognitiaclaeves

9

同様のことが私にも起こりました。「Feat / name」のようなブランチを作成しました。私はそれを使ってそれをプッシュしようとしました:

git push --set-upstream origin Feat / name

私はあなたと同じ致命的なエラーを受け取りました:

致命的:集合体/名前をブランチに解決できません

それを解決するために、影響を受けるファイルがほとんどなかったので、新しいブランチを作成しました。次に、間違ったブランチを削除するためにブランチをリストしましたが、キャップなしで表示されました:

  • 偉業/名前

私は以前にキャップを使用したことがありましたが、最初の文字には使用していませんでした。gitは気に入らないようです...


私は同じケースTHXを持っていました:D
abdoutelb

5

大文字と小文字が区別されます。作成されたブランチとプッシュトゥブランチの両方が同じ大文字であることを確認してください。

例:

git checkout -b "TASK-135-hello-world"

間違った方法:

git push origin task-135-hello-world     #FATAL: task-135-hello-world cannot be resolved to branch

正しい方法:

git push origin TASK-135-hello-world

2

多分あなたはgit fetchを実行するのを忘れましたか?リモートリポジトリからデータを取得する必要があります。実行してみてくださいgit fetch remote/branch


2

私の場合、以前は大文字のブランチフォルダー(またはそれが何と呼ばれていても)を使用していましたが、大文字と小文字が異なる新しいフォルダー(小文字)を作成しましたが、実際にはgitが大文字のブランチを作成しました。

feature-ABC/branch1以前と同じようにブランチを作成してプッシュしました。次に、ブランチfeature-abc/branch2(小文字のABCに注意)を作成し、それを使用してリモートにプッシュしようとするgit push --set-upstream origin feature-abc/branch2と、「ブランチに解決できない」エラーが発生します。それで、私のgit branchためにではfeature-ABC/branch2なく、実際に作成されたことがわかりfeature-abc/branch1ます。でもう一度チェックアウトgit checkout feature-ABC/feature2し、大文字(feature-ABC/feature2)を使用してプッシュして解決します。


2

間違ったケースで分岐しようとしたため、同じ問題に直面しました。私はつまり、間違ったケースでブランチに切り替えてみましょうGIT feature/Nameの代わりにfeature/name。上記よりも簡単な解決策が見つかりました:

  • 'feature / Name'への変更をコミットします
  • git checkout master (or develop)
  • git checkout feature/name <正しいケースで
  • git push

2

Windows 10 では、GitBashの代わりにcmdを使用してこれを解決しました。

これは、大文字小文字の区別と、gitとコマンドラインがそれらを処理する方法に関係しています。


1

同様のブランチを作成したが、大文字と小文字を区別して異なる場合は、次のコマンドを実行する必要があります。

git branch -D <name-of-different-case-branch>

もう一度押してみてください。


1

@Ty Leの少し変更された回答:

ファイルに変更を加える必要はありませんでした-'Feature / ...'という名前のブランチがあり、上流へのプッシュ中にタイトルを 'feature / ...'に変更しました(最初の文字のケースを小文字に変更しました) )。


0

私もこの問題を抱えていて、通常のブランチは最初から始まりますpb-3.1-12345/namebranchが、最初の2文字を誤って大文字にしましたPB-3.1/12345/namebranch。ブランチの名前を小文字に変更した後、ブランチを作成できます。


0

私にとってはブランチの名前は

Rel4.6 / bug / Some-short-description

私がしなければならなかったすべては使用するときです

git push origin R elx.x / bug / Some-short-description

書く

git push origin r elx.x / bug / Some-short-description

relで小文字のrを使用してブランチを作成していたため。

それで、この問題の原因は何ですか?

.git/refs/heads見つけたコンテンツをリストしたとき

drwxr-xr-x  4 eslam_khoga  staff   128B Sep 22 20:22 relx.x

しかし、ありませんRelx.x

その内側bugと内側のbug私のブランチの名前。

したがって、gitは同じ名前で大文字と小文字が異なるディレクトリを作成しようとします

ただし、システムは大文字と小文字を区別しません。

それがこの問題の原因です!


0

異なるケーシングで同じ問題がありました。

開発(またはマスター)へのチェックアウトを行った後、名前(間違った名前)をテストのようなものに変更しました。

  • git checkout開発
  • git branch -m間違った名前のテスト

次に、名前を正しい名前に戻します

  • git branch -m test right-name

次に、正しい名前のブランチにチェックアウトします

  • git checkout正しい名前

その後、それはリモートブランチにプッシュするように働きました

  • git push origin right-name

0

私にとっての問題は、gitとmacOSファイルシステムに2つの異なる大文字と小文字の区別を設定していたことでした。私のMacはAPFS / Is Case-Sensitiveでフォーマットされていました:いいえ。しかし、ある時点でXcodeイメージアセットの命名に関する奇妙な問題を回避しようとしてgit設定を反転させたので、git config --global core.ignorecase falseです。それを元に戻し、設定を揃え、ブランチを再作成してプッシュすることで、軌道に乗ることができました。

git config --global core.ignorecase true

クレジット:https : //www.hanselman.com/blog/GitIsCasesensitiveAndYourFilesystemMayNotBeWeirdFolderMergingOnWindows.aspx


0

同じ問題がありましたが、解決しました。ブランチ名では大文字と小文字が区別されることに気付きました。GitHubのメインブランチは「マスター」ですが、私のgitbashコマンドでは「マスター」です。ローカルリポジトリのマスターの名前をマスターに変更しましたが、うまくいきました!😀😀


0

私は同じ問題に出くわしました、そして私がブランチをチェックアウトしている間にケーシングを混同していたことに気づきました。branchName代わりにチェックアウトしBranchName、リモートにプッシュしようとすると、同じエラーが発生しました。

修正:

git push --set-upstream origin BranchName

アップストリームを正しい名前に設定することにより、githubで正しいブランチが更新され、次のコマンドで正しいブランチ名をチェックアウトできました

git checkout BranchName 

そして、それはあなたの最後のプッシュで最新でなければなりません。


-1

ローカルブランチにいる場合、ブランチの名前を「Feature / Name」から「feature / Name」に変更できます

git -m feature/Name

git push他のブランチ(開発など)でチェックアウトを行い、名前を変更したブランチに戻るのに問題がある場合

git checkout feature/Name

もう一度お試しください git push

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.