Ich habe ein entferntes Repository geklont und ein paar Übertragungen vorgenommen. Ich versuche, meine Commits zurück in das Repository zu übertragen, damit andere Entwickler sie abrufen können. Zuerst habe ich es versucht: git push "other_serv" my_branch:master
aber ich habe
remote: error: refusing to update checked out branch: refs/heads/master[K
remote: error: By default, updating the current branch in a non-bare repository[K
remote: error: is denied, because it will make the index and work tree inconsistent[K
remote: error: with what you pushed, and will require 'git reset --hard' to match[K
remote: error: the work tree to HEAD.[K
remote: error: [K
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to[K
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into[K
remote: error: its current branch; however, this is not recommended unless you[K
remote: error: arranged to update its work tree to match what you pushed in some[K
remote: error: other way.[K
remote: error: [K
remote: error: To squelch this message and still keep the default behaviour, set[K
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.[K
To user@server:/path/to/git
! [remote rejected] my_branch -> master (branch is currently checked out)
Also habe ich das Problem gegoogelt und auf dem Remote-Server ausprobiert:
git checkout -b dummy
Dann habe ich versucht, erneut zu pushen, erhielt aber die gleiche Fehlermeldung. Anstatt auf den Master zu pushen, habe ich also versucht, auf den Dummy zu pushen. Dann bekam ich diesen Fehler:
error: Unable to append to ./logs/refs/heads/dummy: Permission denied
To user@server:/path/to/git
! [remote rejected] my_branch -> dummy (failed to write)
error: failed to push some refs to 'user@server:/path/to/git'
Also suchte ich weiter und fand heraus, dass einige Leute Probleme mit ihren Genehmigungen hatten. Also habe ich alle Dateien mit chmod und chown versehen:
-rw-rw-r-- 1 user git 41 2011-06-20 20:07 dummy
-rw-rw-r-- 1 user git 41 2011-06-19 19:47 master
und ich kann sowohl in die Dummy- als auch in die Masterdatei schreiben, aber ich erhalte immer noch den oben genannten Fehler. Hat jemand eine Lösung? Ich habe mir den Kopf über dieses vermeintlich einfache Problem zerbrochen.
エディトリアル : Ich scheine die Ursache gefunden zu haben. Aus irgendeinem Grund befindet sich mein Repository unter /path/to/repo.git, obwohl alle Befehle, die ich verwende, auf /path/to/repo verweisen. Ist dies ein Teil von Git?
EDIT 2: Es stellte sich heraus, dass es einen zweiten Ordner namens ./repo.git gab. Da der Ordner ./repo leer war, suchte Git in ./repo.git nach den ./repo-Dateien und nicht in ./repo. Es scheint, dass Git bei der Suche nach ./.git ./repo.git/.git gegenüber ./repo bevorzugt, wenn sich die Git-Konfigurationsdateien in ./repo befinden.