2010-10-23 27 views
12

Ich habe ein Basis - Repository, das lebt auf einem UNC \ machine \ share .... etc. Ich habe einen lokalen Klon, an dem ich im Master-Zweig arbeite und füge gelegentlich in den "stable" Zweig ein.Git Probleme mit Git - Push --all

in der Regel mache ich eine git push --all

alle Änderungen in allen Bereichen bis zum Server zu verschieben. git branch MultiCompany

Nach einem neuen Zweig zu schaffen und sie dann an den Server schiebt git push --all

, die auch den Zweig auf dem Server erstellt. Ich habe einige Arbeit, hat sich verpflichtet, alle Änderungen in Multicompany Zweig und dann versucht, eine git push --all

und bekam die folgende Fehlermeldung zu tun:

[email protected] ~/desktop/git sourcetree/maerekai.web.framework (multicompany) 
$ git push --all 
Counting objects: 28, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (22/22), done. 
Writing objects: 100% (23/23), 11.34 KiB, done. 
Total 23 (delta 8), reused 0 (delta 0) 
Unpacking objects: 100% (23/23), done. 
error: Ref refs/heads/multicompany is at bd5a32df35ce8d5ae30ce999af34c4c5f35581df but expected 0000000000000000000000000000000000000000 
remote: error: failed to lock refs/heads/multicompany 
To //pluto/users/cdturner/Git repositories/Maerekai.web.framework.git 
! [remote rejected] multicompany -> multicompany (failed to lock) 
error: failed to push some refs to '//pluto/users/cdturner/Git repositories/Maerekai.web.framework.git' 

Ich habe versucht, die letzte mit git reset --hard HEAD^ begehen wieder heraus

und dann erneut versuchten die Push .....

[email protected] ~/desktop/git sourcetree/maerekai.web.framework (multicompany) 
$ git push --all 
Total 0 (delta 0), reused 0 (delta 0) 
error: Ref refs/heads/multicompany is at bd5a32df35ce8d5ae30ce999af34c4c5f35581df but expected 0000000000000000000000000000000000000000 
remote: error: failed to lock refs/heads/multicompany 
To //pluto/users/cdturner/Git repositories/Maerekai.web.framework.git 
! [remote rejected] multicompany -> multicompany (failed to lock) 
error: failed to push some refs to '//pluto/users/cdturner/Git repositories/Maerekai.web.framework.git'` 

Antwort

6

auf der Remote-Repo einen git fsck --full zu tun. Der Remote-Repo könnte beschädigt sein. Klonen Sie einen anderen von der Fernbedienung. Ersetzen Sie die Originalfernbedienung durch diese. Sie sollten jetzt in der Lage sein, erneut zu drücken. Mit dem Remote-Repo ist etwas passiert. Nichts, was Sie tun, ist mit dem normalen Gebrauch nicht vereinbar.

3

Danke, git fsck --full berichtet "baumelnden commit"

so git prune blies die säumige Sachen weg und ich habe es wieder zu geben. Btu zumindest die Bäume sind alle gelöst ..

Danke für die Hilfe.

+2

So 'git gc' ist es :) – Wernight

15

Ich glaube, dass die Hauptursache für dieses Problem der Unterschied in der Großschreibung zwischen den lokalen und Remote-Zweignamen und der Windows-Freigabe, die das Remote-Repository bewirkte, ist die Groß- und Kleinschreibung.

Wir haben gerade diesen genau gleichen Fehler gefunden und konnten das Problem lösen, indem wir den lokalen Zweig so umbenennen, dass er der Großschreibung des vorhandenen entfernten Zweiges entspricht.

Siehe hier how to rename a local branch.

In Windows aufgrund Kapitalisierung, müssen Sie zwei Schritte:

git branch -m example foo 
git branch -m foo EXAMPLE 
+0

Danke! Das gleiche Problem hier ... danke an Sie kommentieren Ich werde Finnely in der Lage sein, das Problem zu beheben, das ich hier bekommen habe :) – Guillermo

+0

Ich konnte nicht mit SourceTree umbenennen ("Zweig existiert bereits ...)", also habe ich in ein umbenannt Name der temporären Zweigstelle, der aus .git/refs/gelöscht wurde, wird in den Ordner mit der falschen Groß-/Kleinschreibung verschoben und anschließend in die Verzweigung umbenannt, um die korrekte Groß-/Kleinschreibung zu verwenden. –

5

ein Fehler fand ich einen Zweig develop zu einem Repository zu schieben versuchte, die Zweige genannt hatte: develop/1148 und develop/693. Git ist nicht in Ordnung mit diesem (ich vergesse warum), also löschte diese Zweige (wenn möglich) dieses Aufhängen.

+1

Das war die Lösung für mich. Ich habe versucht, "dev" zu drücken, als auf der Fernbedienung ein alter Zweig namens "dev/rob" existierte. Running 'git push Herkunft: dev/rob' hat es zuerst behoben. – robbles

+0

Arbeitete auch für mich. Ich habe versucht, einen Zweig namens release/patch1 zu pushen, wenn ein Zweig namens release bereits auf der fernebene existiert. –

+1

Git lässt keine Verzweigung, einen Zweigordner und ein Tag mit demselben Namen zu. TIL – Hannele