2 Stimmen

git push führt zu "permission denied" oder (branch is currently checked out)

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.

1voto

gahooa Punkte 121696

Wenn Sie ein entferntes Repository einrichten, ist es am besten, ein reines Repository zu verwenden...

git clone --bare YourRepo/ YourRepo.git
rsync -azv YourRepo.git you@your.server.com:

Klonen Sie es nun über ssh:

git clone ssh://you@your.server.com/~/YourRepo.git
... edit ...
git commit ...
git push origin HEAD

Die Verwendung eines nicht-nackten Repositorys hat, wie die Fehlermeldung sagt, einige Probleme mit den Berechtigungen. Ein Bare Repository hat kein zugehöriges Arbeitsverzeichnis und ist daher frei von dieser Komplexität.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X