Mar
22
2011

Trabajando con Git

Ya vimos en entradas anteriores como configurar nuestro servidor de Git con Gitosis. Ahora solo nos falta añadir nuestro primer repositorio y empezar a trabajar, o bien clonar un repositorio existente ya creado.

  • Con este pequeño script de Bash podremos crear automáticamente repositorios nuevos en nuestro servidor Git.
#!/bin/bash
if [ -z $1 ]; then
    echo "Especifica el nombre del proyecto."
    exit 1
fi

if [ -z $2 ]; then
    echo "Especifica la dirección remota. (Formato user@host, normalmente gitosis@hostname)"
    exit 1
fi

if [ -d $1 ]; then
    echo "El proyecto ya existe."
    exit 1
fi

mkdir $1
cd $1
git init
touch .gitignore
git add .gitignore
git commit -a -m "Inserción inicial."
git remote add origin $2:$1.git
git push origin master:refs/heads/master
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
git config --global core.editor /usr/bin/vim
git config --global user.name "Mi nombre completo"
git config --global user.email mi@correoelectronico.com
  • Si por el contrario nos dan un repositorio que ya ha sido creado por otra persona, la forma de acceder a él se efectuará con la orden git clone git@servidor.dominio.com:nombredelrepositorio.git
  • Para ver todas las opciones de configuración que tenemos asignadas teclear git config –list

Una vez tenemos nuestro repositorio, empezaremos a trabajar con git para lo que pondré un pequeño tutorial de los comandos más utilizados, cada uno de estos comandos siempre llevará precedida la orden git

La filosofía global de funcionamiento, dentro de un gestor de versiones debería de ser siempre antes de trabajar actualizarnos toda la información del servidor con pull, para una vez terminado y en la medida de lo posible (siempre que tengamos red) alimentar nuestro servidor con los cambios efectuados con push.

Ahora imaginemos que queremos añadir una estructura de directorios, ficheros dentro del árbol de nuestro repositorio. Simplemente organizamos los directorios y ficheros como nos guste y posteriormente se lo comunicamos a git con el comando add 1*. Recordad que para que un directorio se añada a nuestro árbol ha de tener algún fichero dentro. Este comando también lo utilizaremos si cambiamos el contenido de algún fichero. Si por el contrario queremos borrar del repositorio e índice de versiones, algún fichero o directorio lo haremos con el comando rm 1*.

Si en algún momento se nos olvida que hemos cambiado o añadido, simplemente podemos preguntar con el comando status y para finalizar cuando queramos que todos los cambios efectuados se introduzcan en el control de versiones lo haremos con el comando commit 2*, también podemos hacer commit -a de esa manera no es necesario hacer el add (sólo que en ese mismo commit nos añadirá todo lo cambiado hasta el momento, siempre y cuando los ficheros ya estuviesen en el repositorio, de otra forma deberemos de usar add), recordar cuando terminemos todos los commits hacer un push para actualizar la información en el servidor Git. Si por el contrario lo que queremos saber del estado es lo que realmente se ha modificado lo podemos averiguar con la orden diff, o si queremos llegar más lejos y saber quien, cuando y que realizo lo extraeremos con log y si le pasamos el parámetro log –stat veremos los ficheros involucrados.

Con estos comandos se puede trabajar de forma sencilla y funcional, más adelante en entradas posteriores comentaremos funciones más avanzadas de uso de Git.

1* add,  rm, cp, mv: estos comandos como es de suponer llevaran escrito detrás el fichero(s) o directorio(s) a los que ejecutar la acción.

2* commit: al pulsar este comando nos aparecerá una edición de texto (normalmente con vi) donde tendremos que informar en la primera línea al gestor de versiones, que cambios se han efectuado en los ficheros que nos aparecen y la razón del cambio.  Una vez puesta la información guardamos el texto y ya está. Si por algún casual dentro de ese commit se nos olvida meter o modificar algo, añadiendo el atributo commit –amend entre el último commit y nuestras modificaciones posteriores sería como haberlas metido en el penúltimo commit todas juntas.

 

Entradas relacionadas

Sobre el autor: Juan Carlos Giménez Moncada

Luchando con el Open Source desde 1996...

1 Comentario + Comentar

  • Thanks alot – your answer solevd all my problems after several days struggling

Nube de etiquetas

PHP Freelancer