View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Git

Ir al Diario de instalación de Git en el servidor


Git es un sistema de control de versiones distribuido usado por varios proyectos grandes, entre ellos el núcleo de linux. Es más completo que la mayoría de la competencia a costa de ser más complejo en su uso, y de ocupar más espacio en disco.

Git funciona con lo que se denomina repositorios. Un repositorio Git contiene todas las diferentes versiones del código fuente de un proyecto. Aquí vamos a trabajar con un servidor central que tendrá todos los repositorios de los proyectos. El código fuente de un proyecto puede estar en cualquier máquina y cada vez que se haga un cambio, se deberá sincronizar el repositorio local en esa máquina con el del servidor para tener siempre en el servidor la última versión.

Nuestro servidor Git está instalado en la máquina "chibiko" con dirección IP 3.0.1.44
Es posible consultar on-line los proyectos añadidos a nuestro Git en el Repositorio Git de SICOSOFT

¿Qué necesito tener instalado para poder usar el Git?
Para poder sincronizar los datos de tu proyecto local con el repositorio del servidor Git, instala Git en tu equipo: Git Downloads

Una vez instalado Git en tu equipo, configura los parametros básicos:
  • git config --global user.name "Nombre Apellido"
  • git config --global user.email napellido@sicosoft.es

¿Cómo autorizar mi ordenador para cambiar la configuración del servidor Git? (necesario para poder crear nuevos repositorios, etc)
En las instrucciones que van a continuación, sustituye el mihostname en itálicas por el nombre de tu máquina, p.ej. pepito).

1. Si no tienes claves dsa en el usuario al que quieres autorizar, se hace lo siguiente en tu ordenador:

mihostname:~$ cd ~/.ssh
mihostname:~/.ssh$ ssh-keygen -t dsa

2. Copias el id_dsa.pub de tu ordenador a chibiko con el nombre /tmp/mihostname.pub:

mihostname:~/.ssh$ scp id_dsa.pub metro@chibiko:/tmp/mihostname.pub

3. En chibiko, se accede a la configuración del gitolite y e copia el .pub al directorio de autorizaciones (keydir) y se autoriza al usuario

metro@chibiko:~$ rm -rf t5
metro@chibiko:~$ mkdir t5
metro@chibiko:~$ cd t5
metro@chibiko:~/t5$ git clone git@chibiko:gitolite-admin
metro@chibiko:~/t5$ cd gitolite-admin
metro@chibiko:~/t5/gitolite-admin$ cp /tmp/mihostname.pub keydir
metro@chibiko:~/t5/gitolite-admin$ sed -i "/gitolite-admin/aRW+ = mihostname" conf/gitolite.conf
metro@chibiko:~/t5/gitolite-admin$ git add -A
metro@chibiko:~/t5/gitolite-admin$ git commit -m "updated configuration"
metro@chibiko:~/t5/gitolite-admin$ git push



¿Cómo crear un nuevo repositorio en el servidor Git?
Vamos a crear un nuevo proyecto llamado miproyecto al que puede acceder el usuario mihostname

metro@chibiko:~$ rm -rf t5
metro@chibiko:~$ mkdir t5
metro@chibiko:~$ cd t5
metro@chibiko:~/t5$ git clone git@chibiko:gitolite-admin
metro@chibiko:~/t5$ cd gitolite-admin
metro@chibiko:~/t5/gitolite-admin$ vi conf/gitolite.conf
Se añaden las líneas del nuevo repositorio, similar a:
   repo    miproyecto
      RW+ = mihostname   
      RW+ = @all
      R   = gitweb

metro@chibiko:~/t5/gitolite-admin$ git add -A
metro@chibiko:~/t5/gitolite-admin$ git commit -m "updated configuration"
metro@chibiko:~/t5/gitolite-admin$ git push
metro@chibiko:~/t5/gitolite-admin$ su - git
Contraseña: maxtop
gitolite@chibiko:~$ vi projects.list
Se añade la línea con el nombre del nuevo proyecto miproyecto.git, similar a:
   miproyecto.git   

gitolite@chibiko:~$ cd repositories
gitolite@chibiko:~/repositories$ ./fix-perms.sh
gitolite@chibiko:~/repositories$ cd miproyecto.git
gitolite@chibiko:~/repositories/miproyecto.git$ touch git-daemon-export-ok
gitolite@chibiko:~/repositories/miproyecto.git$ vi description
Se modifica la línea con la descripcion del nuevo proyecto
gitolite@chibiko:~/repositories/miproyecto.git$ exit
metro@chibiko:~/t5/gitolite-admin$ exit


¿Cómo añadir nuestro proyecto local al repositorio del servidor Git?

metro@mihostname:/mnt/metro/Fuentes.MASTER/f_miproyecto$ rm -rf ../f_mitemporal
metro@mihostname:/mnt/metro/Fuentes.MASTER/f_miproyecto$ mkdir ../f_mitemporal
metro@mihostname:/mnt/metro/Fuentes.MASTER/f_miproyecto$ mv * ../f_mitemporal/
metro@mihostname:/mnt/metro/Fuentes.MASTER/f_miproyecto$ git clone git@chibiko:miproyecto .
metro@mihostname:/mnt/metro/Fuentes.MASTER/f_miproyecto$ mv ../f_mitemporal/* .
metro@mihostname:/mnt/metro/Fuentes.MASTER/f_miproyecto$ git add -A
metro@mihostname:/mnt/metro/Fuentes.MASTER/f_miproyecto$ git commit -m "Version Inicial"
metro@mihostname:/mnt/metro/Fuentes.MASTER/f_miproyecto$ git remote add miproyecto ssh://git@3.0.1.44:miproyecto.git # p.ej. git remote add Emergencia ssh://git@3.0.1.44:Emergencia.git
metro@mihostname:/mnt/metro/Fuentes.MASTER/f_miproyecto$ git push miproyecto master # p.ej. git push Emergencia master


NOTA: En woody (y en salchicha), por tener un git antiguo, hay que hacerlo de forma diferente. Por ser un git muy antiguo (1.5.x), no puede clonar repositorios vacíos, por eso hay que hacer el commit inicial desde otro sitio. Se recomienda usar metro@chibiko por tener permiso para todos los repositorios:
metro@chibiko$ cd /tmp
metro@chibiko$ git clone git@chibiko:Extincion extincion
metro@chibiko$ cd extincion/
metro#chibiko$ echo "Driver de extincion" > README
metro@chibiko$ git add -A
metro@chibiko$ git commit -m "Initial commit (README)"
metro@chibiko$ git push origin master


Después ya se puede hacer el procedimiento "normal" de añadir archivos
metro@woody$ cd /mnt/metro/Fuentes.MASTER/
metro@woody$ rm -rf f_mitemporal
metro@woody$ mv f_extincion f_mitemporal
metro@woody$ git clone git@chibiko:Extincion f_extincion
metro@woody$ cd f_extincion
metro@woody$ mv ../f_mitemporal/* .
metro@woody$ git add *
metro@woody$ git commit -m "Version Inicial"
metro@woody$ git push


¿Cómo guardar cambios realizados del proyecto local en el servidor?
  • git add -A
  • git commit -m 'Version y fecha' (en vez de 'Versión y fecha' puedes poner un comentario de los cambios introducidos)
  • git push nombre_proyecto master

¿Cómo sincronizar otra copia del proyecto en otro ordenador con el proyecto del servidor?
  • git pull --rebase nombre_proyecto master
  • git push nombre_proyecto master

¿Cómo clonar un repositorio del servidor en otro ordenador?
  • git clone git@chibiko:repositories/nombre_proyecto.git

¿Cómo evitar subir al repositorio ciertos archivos?
  • Sólo debería controlarse la versión de los archivos que formen parte del código fuente, no ejecutables ni temporales, etc. Para evitar que se añadan archivos innecesarios al repositorio de un proyecto, es posible crear un archivo .gitignore (en el directorio raíz del proyecto) en el que introduciremos aquellos archivos que no queremos controlar los cambios.
  • Por ejemplo un archivo .gitignore para proyectos Visual Basic, podría ser este:
*.tmp
*.exe
*.obj
*.log
*.bak
*.zip
*.scc
*.pdf


¿Cómo añadir nueva versión de ControlId al git?
  • Entrar en chibiko como arcom
  • Montar /home/arcom/ControlId (como root)
  • cd /home/arcom/ControlId
  • git add -A
  • ../commit-with-changelog.sh 1.7.8 (version)
  • git push
Si no funciona el git push
  • git remote add ControlId git@chibiko:controlid.git
  • git push ControlId master

Método "rápido" de subir la versión inicial al git

1. Se crea el nuevo repositorio en chibiko (ver arriba para editar el gitolite-admin)
2. En el directorio del proyecto, se hace
git init .
git remote add origin git@chibiko:nombreproyecto.git

git init .
git remote add origin ssh://git@chibiko/nombreproyecto.git
git add -A
git commit -m "Versión inicial"
git push -u origin master


Cómo generar ramas

Para hacer una nueva rama
git checkout -b nuevarama
git push -u origin nuevarama

Para volver a la rama master
git checkout master
git push -u master


Artículos de referencia: