2010-08-31 7 views
7

Compré un cuadro de desarrollo personal que usaré para implementar cosas que creo en mi computadora portátil. Pensé que sería una buena idea usar Git para la administración de código. La idea era que continuaré cometiendo en mi computadora portátil y, cuando sea necesario, presionaré los cambios en la caja de desarrollo remoto.Se necesita asesoramiento de configuración de Git (repo local y remoto)

  1. Me inicializar un repositorio git en la caja y
  2. clonado en mi portátil.
  3. pero después de hacer git push consigo este error:

    remoto: Error: negarse para actualizar desprotegido de la rama: refs/heads/master remoto: Error: Por defecto, la actualización de la rama actual en un no-desnuda repositorio remoto: error: se negó, ya que hará que el índice y el árbol de trabajo inconsistentes remoto: error: con lo que empujó, y requerirá 'reset git --hard' para que coincida con

que sé que el repositorio remoto no estaba vacío.

quiero preguntar si la única manera de ir con mi tipo de configuración es:

  1. inicializar una cesión temporal al descubierto en el servidor
  2. Clon en mi portátil
  3. añadir nuevos archivos a nivel local repo portátil y cometer los archivos
  4. empuje a la caja dev remota repo

Incluso esta configuración me da errores:

No refs in common and none specified; doing nothing. 
Perhaps you should specify a branch such as 'master'. 
fatal: The remote end hung up unexpectedly 

EDITAR

me trataron

git push origin master 

dio este mensaje:

error: unable to create directory for .git/refs/remotes/origin/master 
error: Cannot lock the ref 'refs/remotes/origin/master'. 

Oh me mudo ... creo que es sudo como en

sudo make me intelligent

Respuesta

10

El primer mensaje, como usted ha dicho, fue porque la distancia no fue un acuerdo de recompra desnudo.

El segundo mensaje fue porque el repositorio desnudo que creó no tenía ramas para empezar. Cuando clonaste el repositorio y sacaste una copia de trabajo, creó la rama principal por ti. Sin embargo, cuando trataste de empujar, no había una rama principal en el repositorio remoto, por lo que se queja.

Pruebe usar git push origin master (o lo que se llame a su control remoto) y debe crear las ramas en el control remoto para usted.

+0

Gracias por su respuesta. Lo hice y recibo este error: 'error: no se puede crear el directorio para .git/refs/remotes/error de origen/maestro: No se pueden bloquear los ref refs/remotos/origin/master. –

+0

No importa. Olvidé 'sudo'. :) –

+0

Empujar como root solo pospone el problema para el siguiente tipo que está tratando de presionar. Uno necesita mirar cuidadosamente qué usuario va a empujar al origen y qué chmods se utilizan. La configuración como multiusuario no es tan fácil, desafortunadamente. –

0

La segunda cuestión:

error: unable to create directory for .git/refs/remotes/origin/master 
error: Cannot lock the ref 'refs/remotes/origin/master'. 

aparece cuando sus los ficheros propios y permisos están equivocados. Este mensaje significa que en el repositorio de workin actual que intentas enviar desde algunos archivos no se puede escribir. Echa un vistazo a toda la ruta hasta .git/refs/remotes/origin/master para detectar el problema. Yo recomendaría no sudo con git porque esto creará archivos, etc. como raíz de usuario de Unix y evitará que cualquier persona más tarde trabaje con este repositorio sin sudo'ing todo el tiempo.

Si usted se encuentra en un environement multiusuario, puede crear un nuevo user git con contraseña vacía (sin ssh para ese usuario!) Que se puede cambiar a la su git (Do = cambio de usuario), que se encarga de todos el empuje/obtención/clonación, etc. Esto es esencialmente lo que también haría una configuración desamonizada (un usuario para cualquier metaarchivo) pero podría tener algunas ventajas en algunas circunstancias.

Cuestiones relacionadas