Crear un repository git desde una carpeta de producción

Tengo una máquina con un website de producción, quiero crear un repository git en esa máquina para administrar el website usando git.

Entonces, lo primero que hice fue crear un repository .git vacío en la máquina de producción:

mkdir repos cd repos mkdir production.git cd production.git git init --bare 

En este repository debajo de hooks / post-receive, he agregado las siguientes líneas:

 #!/bin/sh GIT_WORK_TREE=/var/www/production_website git checkout -f 

Luego descargué la carpeta con mi website de producción en mi máquina local y comencé a usar git:

 cd production_website git init 

Después de eso hice el primer commit:

 git add . git commit -m "first commit" 

Y finalmente agregué el repository remoto e hice mi primer impulso:

 git remote add origin ssh://myuser@productionmachine.com/repos/production.git git push origin master 

Pero cuando hago el push me da el siguiente post de error:

 remote: fatal: This operation must be run in a work tree 

Que se activa cuando el gancho post-recepción se activa.

¿Alguna sugerencia de lo que podría estar haciendo mal?

ACTUALIZAR :

En el primer paso, al crear un repository .git vacío en la máquina de producción, si uso git init lugar de git init --bare me sale este post de error al hacer un push:

 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 inconsistent 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'. 

Preferiría mantener el repo al descubierto, luego en el gancho posterior a la recepción

 cd /path/to/non-bare/repo git --git-dir /path/to/non-bare/repo/.git --work-tree=/path/to/non-bare/repo pull 

Es decir:

  • tirando de un repository desnudo (al que puedes empujar), y luego sacando de un segundo repository no descubierto
  • en lugar de intentar presionar directamente a un repository simple (lo cual es difícil, como se explica en " ¿Cómo puedo usar un repository de git bare para insertlo en un repository no vacío? ")