2012-09-14 4 views
21

Ich versuche, einen Zweig von meinem lokalen auf den Ursprung zu schieben. Der Name der Zweigstelle und der Pfad sind identisch. Ich habe für eine Weile aus diesem Zweig gedrängt und gezogen und hatte nie ein Problem. Aber plötzlich begann es sich schlecht zu benehmen. Letztes Mal, als ich mit folgendem Befehl Ursprung zu drücken versucht:Notorious Git Fehler: Remote abgelehnt (konnte nicht gesperrt werden)

git push origin feature/Prizefulfilment 

Es mir folgende errror gibt:

72c6c1da98e5cff4484e254a538d9e3b472156ff but expected 0000000000000000000000000000000000000000 

Ich habe um gegoogelt aber eine ganz befriedigende Lösung es noch nicht finden.

Mein genaue Fehler sieht wie folgt aus:

$ 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 [email protected]:OpusOneSCRUM 
! [remote rejected] feature/Prizefulfilment -> feature/Prizefulfilment (failed to lock) 
error: failed to push some refs to '[email protected]:OpusOneSCRUM'` 

Irgendwelche Ideen?

+1

Sie möchten vielleicht 'git fsck' auf dem lokalen und Remote ausgeführt, dass nichts zu machen ist ernsthaft beschädigt. – singpolyma

+0

Es hat einige dangling Commits auf meinem lokalen 'Checking Objektverzeichnisse: 100% (256/256), fertig. Überprüfen von Objekten: 100% (106152/106152), fertig. baumelt blob 4118c6392bbea95a6404d40344e12ff8fe1e64c8 baumelt blob a34f2078115375df3749567e01793e556f0e5ade baumelt blob 9a5e545d9056200834f74d6426144269974467a0 baumelt blob 867c5821823a875e724203b5bc8bbf65c8b72931 baumelt blob 128ccc6d40e4090cd725d37867308e525825b991 baumelt blob 5b91603a188d5f13af4ef56b0f62d6d8caff92b4 baumeln blob c6a5241f7a4c23a68456526adf94f3c784d1df69' und viel – TeaLeave

+0

baumelte ich mit git prune gefolgt und es entfernt stoßen viele baumelnden Blobs einige dangling commits sind immer noch da ... – TeaLeave

Antwort

28
git push feature/prizeFulfilment: feature/Prizefulfilment 

, die auf this answer ähnelt:

For the record, I believe the root cause of this problem was the difference in capitalisation between the local and remote branch names, and the case-insensitive nature of the Windows share that hosted the remote repository.

We just encountered this exact same error and were able to resolve the problem simply by renaming the local branch to match the capitalisation of the existing remote branch.

Versuchen und stellen Sie sicher, verwenden die gleiche Kapitalisierung zwischen lokalen und entfernten Niederlassungen.

Sie zweiten Befehl machen die Verbindung zwischen dem prizeFulfilment und remote Prizefulfilment explizit, weshalb es funktioniert. Aber es ist keine gute Lösung, einen lokalen Zweig mit dieser Art von Unterschied zu halten.

+0

Danke für die Kommentare, es war hilfreich :). – TeaLeave

3

Was mir passiert ist, war, dass git die Kapitalisierung meiner lokalen Niederlassung änderte. Ich hatte einen alten Zweig namens Feature/blahBlah und einen neuen Zweig namens feature/fooBar. Letzteres wurde automatisch in Feature/fooBar umbenannt, da git Filialen als Ordner speichert und ich nicht den gleichen Ordnernamen mit unterschiedlicher Großschreibung haben konnte.

Um es zu beheben, musste ich in .git/refs/heads gehen und "Feature" umbenennen, um "Feature" `so alle Zweige wäre konsistent.

-1

Wenn Sie Nachricht wie diese erhalten, ziehen erste Betrieb von Remote-branch.Then schiebe operation.When jemand Dateien auf Remote-Server schiebt, wird es den Master-Zweig verschieben (bei entfernten Zweig ist Master, es kann ein beliebiger Name sein) zu einem anderen Ort. Sie müssen dies im lokalen Repository aktualisieren, so dass Ursprung/Master im lokalen Repository vorwärts gehen. Dann fügen Sie Dateien im lokalen Repository und commit es. Dann tun push operation.It arbeitete für mich

0

In meinem Fall hatte ich eine Filiale mit allen Kleinbuchstaben auschecken. Dies führte zu einer Inkonsistenz zwischen den Namen der fernen Verzweigung und der lokalen Verzweigung.

Remote-Zweig war INT-4368-einige-Feature-Details, während lokale Zweig war Int-4368-einige-Feature-Details.

Um zu beheben, ging ich in .git \ refs \ heads \ feature und benannte den Namen der Zweigstelle auf die Fernbedienung. Dann ging auf Kommandozeile und lief

git checkout INT-4368-some-feature-details 
2

Ich sah dieser Fehler passieren, weil ein vorhergehender Zweig existierte mit dem gleichen Namen wie meine neuen Zweig Pfadnamen. Beispiel:

  • Fern hat Zweig: some_feature
  • Lokale hat Zweig: some_feature/some_subfeature
  • Lokale schiebt Zweig some_feature/some_subfeature Remote
  • Fern hat Fehler: (failed to lock)

Lösungen:

    Benennen Sie lokale Niederlassung some_feature/some_subfeature zu
  • foo/some_subfeature
  • löschen Fern Zweig some_feature
Verwandte Themen