2011-07-12 4 views
0

J'ai un repo git sur ma machine locale. Je pousse (au départ) ceci à une télécommande (serveur web), je vérifie la télécommande (sur la télécommande) afin que les fichiers puissent être servis par apache, je change un fichier sur mon local, puis j'essaye de le repasser et j'ai toujours une erreur. C'était assez simple avec Svn, comment je fais ça avec git?erreurs à distance git

Counting objects: 5, done. 
Delta compression using up to 2 threads. 
Compressing objects: 100% (3/3), done. 
Writing objects: 100% (3/3), 298 bytes, done. 
Total 3 (delta 2), reused 0 (delta 0) 
remote: error: refusing to update checked out branch: refs/heads/Dev 
remote: error: By default, updating the current branch in a non-bare repository 
remote: error: is denied, because it will make the index and work tree inconsist 
ent 
remote: error: with what you pushed, and will require 'git reset --hard' to match 
remote: error: the work tree to HEAD. 
remote: error: 
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to 
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into 
remote: error: its current branch; however, this is not recommended unless you 
remote: error: arranged to update its work tree to match what you pushed in some 
remote: error: other way. 
remote: error: 
remote: error: To squelch this message and still keep the default behaviour, set 
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'. 
To ssh://[email protected]/var/www/UML/.git 
! [remote rejected] Dev -> Dev (branch is currently checked out) 
error: failed to push some refs to ......' 
+4

Je ne vois aucune erreur ... – KingCrunch

+0

Comme ce n'est pas un problème de programmeurs, ce serait bien si vous posiez aussi l'erreur. – moritz

+0

duplication possible de [erreur push git 'rejetée à distance \] maître -> maître (branche est actuellement extraite)'] (http://stackoverflow.com/questions/2816369/git-push-error-remote-rejected-master -master-branch-is-currently-checked-ou) – manojlds

Répondre

0

Vous ne devriez pas pousser vers un référentiel non nu. Avoir un 3ème repo qui tire périodiquement de celui que vous poussez. Git ne modifiera pas le répertoire de travail de votre télécommande sans le faire explicitement du côté distant.

Vous avez affaire à un DVCS et le concept de push vs pull est important.

Pour plus d'informations, voir progit.org/book.

Espérons que cela aide.

0

temporairement, créez une nouvelle branche temporaire sur votre serveur pour vous permettre de pousser:

git checkout -b temp 

Cela fait en sorte que la branche actuelle vous pousse à ne vérifier. Maintenant, votre poussée de locale devrait passer à travers.

Il existe un concept de repos libre et de repos dans Git, et les repos-repos «centraux» sur lesquels vous appuyez sont généralement nus. C'est une bonne pratique et vous évitera beaucoup de douleur. Vous pouvez également convertir votre repo en cours sur le serveur dans un repo nu:

git config --bool core.bare true 

(supprimer alors tout sauf .git)

Ou, suivez ce que dit @adymitruk. En savoir plus sur Git et DVCS avant de continuer.