¿Cómo configurar el propio servidor GIT? ¿Qué son los repositorios desnudos / no desnudos?

10

Estoy tratando de configurar un servidor GIT simple. Tengo Ubuntu instalado en una PC virtual (Virtual Box). Instalé GIT, creé un repositorio, etc.

git init 
git add .
git commit "..."

Luego, en Windows, hice algo como a continuación (en Cygwin)

git clone [email protected]:proj1

Intenté hacer cambios entonces

git commit -am "..."

pero tengo algo como

ver imagen

Supongo que he configurado mal GIT? ¿Leí que tiene algo que ver con repos desnudos / no desnudos? ¿Debo usar desnudo todo el tiempo? Lo intenté

git checkout --bare [email protected]:proj1 

pero entró proj1.git, archivos / carpetas extrañas como (HEAD, etc.) dentro. ¿Cuál es la forma correcta de configurar GIT?

también alguien puede explicar repos desnudos / no desnudos, estoy un poco perdido, con GitHub, ¡no existe tal cosa!

ACTUALIZADO 28 abr 2011 6PM UTC + 8

Intenté seguir http://www.youtube.com/watch?v=1gNFrPNF9-Y y en Ubuntu (Servidor) hice

git init --bare

luego en Windows (Cliente / Cygwin) hizo

git init 
// added readme.txt 
git add .
git commit -m "..."
git remote add origin master [email protected]:proj2
git push origin master

Sin errores parece estar bien. Pero en Ubuntu, no veo dónde están mis archivos. Miré branches/por 1 theth nth allí?

JM en el trabajo
fuente

Respuestas:

9

Un repositorio "normal" es un directorio que contiene el repositorio real y una copia de trabajo. El repositorio real se encuentra en un subdirectorio oculto con el nombre .git. La copia de trabajo son aquellos archivos y directorios con los que trabaja.

Un repositorio "desnudo" es solo el contenido del .gitdirectorio, sin una copia de trabajo.

No puede trabajar en un repositorio desnudo. Primero debe clonar el repositorio desnudo en un repositorio normal, luego trabajar en el clon.

En su primer intento, creó un repositorio "normal". Entonces clonaste eso. Luego trataste de regresar al repositorio normal. Entonces recibiste una advertencia. No debe presionar a un repositorio normal. Git te advierte cuando intentas hacer eso. Solo debe empujar a un repositorio desnudo.

En su segundo intento, creó un repositorio "desnudo". Luego creaste un repositorio "normal". Luego empujaste del repositorio normal al desnudo. Ese es (uno de) los flujos de trabajo esperados. Por eso no tienes errores ni advertencias.

Cuando desee trabajar en su proyecto desde la máquina Windows y desde la máquina ubuntu, entonces tiene dos opciones:

  1. Cree un repositorio desnudo (no importa dónde). Luego clone desde ese repositorio, uno en la máquina de Windows y otro en la máquina de ubuntu. Ahora empuje desde los clones hasta el repositorio desnudo, y tire del repositorio desnudo hacia los clones. No empuje a los repositorios normales.

  2. Cree dos repositorios normales, uno en la máquina de Windows y otro en la máquina de Ubuntu. Ahora, cuando trabaje en ubuntu, puede extraerlo de la máquina de Windows y viceversa. No se empujen el uno al otro.

En pocas palabras: solo empuje a repositorios desnudos. En todos los demás casos, cuando creas que quieres empujar de A a B, ve a B y luego tira de A.

Parece que eres muy nuevo en git. Lea uno o ambos de los siguientes libros muy buenos: Git Book , Pro Git .

lesmana
fuente
1
hmm parece que el principal punto de aprendizaje es " solo empujar a repositorios desnudos. En todos los demás casos, cuando creas que quieres empujar de A a B, en su lugar, ve a B y luego tira de A ". Si es así, ¿cómo lo hace GitHub? Lo empujo hacia la derecha (¿nv ya lo usó por un tiempo ...)?
Jiew Meng
@JiewMeng: GitHub utiliza repositorios desnudos. El sitio web lee datos directamente de Git y no necesita un workdir.
user1686