32

ローカルからオリジンへのブランチにプッシュしようとしています。ブランチ名とパスは同じです。私はしばらくの間、このブランチからプッシュしたりプルしたりしてきましたが、問題はありませんでした。しかし、突然、動作がおかしくなり始めました。前回、次のコマンドでオリジンにプッシュしようとしたとき:

git push origin feature/Prizefulfilment

次のエラーが表示されます。

72c6c1da98e5cff4484e254a538d9e3b472156ff but expected 0000000000000000000000000000000000000000

私はグーグルで検索しましたが、まだ満足のいく解決策は見つかりませんでした.

私の正確なエラーは次のようになります。

$ git push origin feature/Prizefulfilment
Counting objects: 126, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (75/75), done.
Writing objects: 100% (78/78), 8.83 KiB, done.
Total 78 (delta 61), reused 0 (delta 0)
error: Ref refs/heads/feature/Prizefulfilment is at 72c6c1da98e5cff4484e254a538d9e3b472156ff but expected 0000000000000000000000000000000000000000
remote: error: failed to lock refs/heads/feature/Prizefulfilment
To git@devtools.contestfactory.com:OpusOneSCRUM
 ! [remote rejected] feature/Prizefulfilment -> feature/Prizefulfilment (failed to lock)
error: failed to push some refs to 'git@devtools.contestfactory.com:OpusOneSCRUM'`

何か案は?

4

8 に答える 8

36
 git push feature/prizeFulfilment: feature/Prizefulfilment

それはこの答えに似ています:

記録として、この問題の根本的な原因は、ローカル ブランチ名とリモート ブランチ名の大文字と小文字の違いと、リモート リポジトリをホストする Windows 共有の大文字と小文字を区別しない性質にあると考えています。

これとまったく同じエラーが発生しましたが、既存のリモート ブランチの大文字と小文字が一致するようにローカル ブランチの名前を変更するだけで問題を解決できました。

ローカル ブランチとリモート ブランチで同じ大文字を使用するようにしてください。

prizeFulfilment2 番目のコマンドは、とリモート間の明示的なリンクを作成しPrizefulfilmentます。これが機能した理由です。しかし、そのような違いをローカル ブランチに保持することは、良い解決策ではありません。

于 2012-09-14T05:55:48.737 に答える
5

私に起こったことは、git がローカル ブランチの大文字と小文字を変更していたことです。Feature/blahBlah という名前の古いブランチと、feature/fooBar という名前の新しいブランチがありました。後者の名前は自動的に Feature/fooBar に変更されました。これは、git がブランチをフォルダーとして保存し、大文字と小文字が異なる同じフォルダー名を使用できなかったためです。

これを修正するには、.git/refs/heads に移動して、'Feature' を 'feature' に名前変更し、すべてのブランチが一貫するようにする必要がありました。

于 2015-08-26T20:28:56.860 に答える
5

大文字と小文字を区別するシステムにも存在する問題のもう 1 つの考えられる理由は、違反名の競合です。

リモートリポジトリにブランチが含まれていて、ブランチa/bをプッシュしようとすると、a/b/c同じエラーが git によって報告されます (間違いなく、このエラーの説明を改善する必要があります)。

https://coderwall.com/p/qkofma/a-caution-about-git-branch-names-with-s https://ocroquette.wordpress.com/2011/07/10/git-failed-to-lock /

于 2015-09-08T08:46:59.203 に答える
0

私の場合、すべて小文字のブランチをチェックアウトしました。これにより、リモート ブランチとローカル ブランチの名前が一致しなくなりました。

リモート ブランチは INT-4368-some-feature-details でしたが、ローカル ブランチは int-4368-some-feature-details でした。

修正するために、.git\refs\heads\feature に移動し、リモートに一致するようにブランチ名を変更しました。次に、コマンドラインに移動して実行しました

git checkout INT-4368-some-feature-details
于 2016-07-18T20:22:40.313 に答える
-1

ローカルとリモートのリポジトリのブランチ名が大文字と小文字が一致しません。次のコマンドを使用して、ローカル ブランチの名前を変更できます:-

git branch -m new-name
于 2019-07-24T09:13:38.890 に答える
-1

このようなメッセージが表示されたら、まずリモート ブランチからプル操作を行い、次にプッシュ操作を行います。誰かがファイルをリモート サーバーにプッシュすると、マスター ブランチ (リモート ブランチがマスターの場合は任意の名前) を別のブランチに移動します。別の場所.ローカルリポジトリでこれを更新する必要があるため、ローカルリポジトリのorigin/masterが前進します.次に、ローカルリポジトリにファイルを追加してコミットします.次に、プッシュ操作を行います.それは私にとってはうまくいきました.

于 2016-02-03T06:10:08.170 に答える