pull working, push no funciona para 1und1 git service

Estoy usando el service 1und1.de para GIT que ofrecen. Ahora estoy configurando y saqué los cambios a mi computadora local desde allí con el command git pull ssh: // ………

pero cuando intenté hacer git push ssh: // …… recibí muchos errores:

remote: error: refusing to update checked out branch: refs/heads/master 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 incosistent Auto packing the repository for optimum performance.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 arranged to update its work tree to match waht you pushed in some other way. remote: error: to sqelch this message and still keep the default behaviour, set remote: error: receive.denyCurrentBranch' configuration variable to 'refuse'. ! [remote_rejected] master -> master (branch is currently checked out) error: failed to push some refs to 'ssh://........' 

Hay dos types de repository de Git. Un repository foo.git generalmente se llama foo.git y no tiene un tree de trabajo, solo los files internos de Git. Un repository no simple es un tree de trabajo (es decir, un directory con todos los files) que también contiene un directory llamado .git . Como se explica en el post de error, presionar en un repository no concreto suele ser una mala idea, porque cuando lo haces, el tree de trabajo queda desactualizado frente al repository.

Cuando está alojando un repository para que la gente lo saque y lo empuje, casi siempre quiere un repository simple. Parece que en este caso has creado un repository no desnudo. Como no proporciona ningún detalle sobre cómo creó el repository, no puedo decirle qué hizo mal, pero puede crear un repository vacío de una de estas dos maneras:

  1. Desde el directory donde desea crear el repository, emita git clone --bare path/to/original.git . Eso clonará la fuente en un repository vacío original.git dentro del directory en el que se encuentra.
  2. Desde el directory donde desea crear el repository, emita git init --bare foo.git . Esto creará un repository vacío vacío foo.git dentro del directory en el que se encuentra.

Hay más cosas que puedes hacer, pero son las más fáciles de hacer bien. Emitir git config --set core.bare false dentro de un repository existente hará que Git piense que es un repository desnudo a partir de ese momento, pero usted debe eliminar el tree de trabajo usted mismo, y probablemente deba cambiar el nombre del repository de .git a foo.git .

Cuando está configurando un repository que desea enviar, configúrelo como un repository simple:

 git init --bare 

Aunque técnicamente es posible enviar un repository con el directory de trabajo, es demasiado dolor de cabeza, y en este caso, ni siquiera lo quieres.

Simplemente recree el repository como uno git clone --bare /path/to/repo o cree uno desnudo de él ( git clone --bare /path/to/repo )