Curso GIT

Crea y gestiona el código de tus proyectos online.

Primeros pasos en Git: Creación y gestión de repositorios

Git es un sistema de control de versiones que se centra en la velocidad, “diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente.”

Git-logo

Hoy iniciamos una serie de artículos en donde nos concentraremos en conocer el flujo de trabajo (workflow) básico para llevar a cabo el versionado de nuestros proyectos.

El proyecto de ejemplo se puede consultar directamente en su repositorio de GitHub, en el cual colocaré un tag por cada articulo, para que sean fácil de reconocer los avances.

¿Como lo consigo?

Asumo que ya tenemos instalado Git en nuestro sistema, es fácil conseguirlo si tenemos alguna distribución Linux u OS X, cualquier sistema basado en *nix funciona excelente. Después de instalar Git hay que configurar nuestros datos básicos:

$ git config --global user.name "Mi nombre"
$ git config --global user.email "[email protected]"

Considero que los primeros pasos que debemos concretar tienen que ver en la creación y gestión de un repositorio de forma local, a nivel bastante básico veremos como iniciar nuestros repositorios y registrar cambios en el historial de Git.

Por si mismo, Git es una herramienta con una curva de aprendizaje pronunciada, si no disciplinamos nuestro flujo de trabajo a la par de Git es muy posible que nos encontremos en problemas casi todo el tiempo. No hay que temer, si llevamos un orden y aprendemos a registrar nuestros cambios casi de forma atómica es poco probable que ocurra algo que lamentar.

Creando nuestro repositorio

Cualquier carpeta de nuestro sistema puede ser un contenedor o repositorio para Git, en dicho lugar se establecerá la configuración e historial bajo una carpeta nombrada .git que se encuentra oculta.

Para crear un repositorio no es necesario empezar desde cero con nuestro proyecto, de hecho podemos iniciar uno aún cuando ya tenemos nuestro código en estado avanzado. Por ejemplo, tenemos la estructura de un sistema o librería sencilla:

/proyectos/mi-libreria
/proyectos/mi-libreria/include
/proyectos/mi-libreria/include/sistema.class.php
/proyectos/mi-libreria/include/funciones.php
/proyectos/mi-libreria/index.php

Solo hay que ubicarnos en la carpeta y ejecutar git init para crear el repositorio:

$ cd /proyectos/mi-libreria
$ git init

Initialized empty Git repository in /proyectos/mi-libreria/.git/

Registrar y guardar archivos

Cada repositorio guarda un historial de los cambios que hemos ido realizando en nuestro proyecto, ejecutando git status podemos verificar los cambios hechos en el estado actual:

$ git status

# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# include/
# index.php
nothing added to commit but untracked files present (use "git add" to track)

En el ejemplo notamos que nos hace falta registrar los archivos contenidos en la raíz de nuestro proyecto, ahora vamos a agregarlos:

$ git add .
$ git status

# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: include/funciones.php
# new file: include/sistema.class.php
# new file: index.php
#

He usado git add . pues el punto indica la ruta actual y, por defecto, Git agrega recursivamente al emplear ésta instrucción con una carpeta como argumento. Desde luego es posible agregar archivos individualmente con solo especificar la ruta relativa con relación a la raíz del repositorio, por ejemplo:

$ git add include/funciones.php

Finalmente debemos dar por hechos los cambios que llevamos en el repositorio, entonces ejecutamos git commit para confirmarlo:

$ git commit -m "Primer commit; agregue la estructura de archivos"

[master (root-commit) 0034116] Primer commit; agregue la estructura de archivos
3 files changed, 3 insertions(+), 0 deletions(-)
create mode 100644 include/funciones.php
create mode 100644 include/sistema.class.php
create mode 100644 index.php

Verificamos que todo esté en orden con git status de nuevo:

$ git status

# On branch master
nothing to commit (working directory clean)

Supongamos que la frecuencia de los cambios que realizamos a nuestro código determina la cantidad de commits que podemos efectuar en el repositorio. Lo ideal sería que por cada nuevo cambio significativo en el código o estructura de archivos, registremos lo que hicimos agregando los archivos afectados con una descripción puntual, breve y clara de lo realizado.

Si por ejemplo hay que mover un archivo de lugar, o simplemente le cambiamos de nombre debemos asegurarnos de tener el historial de cambios limpio antes de proceder.

Resumen

  • Un repositorio en Git es un registro de cambios hechos a través del tiempo que sirve para llevar un orden progresivo con respecto al desarrollo de algún proyecto, básicamente código fuente y documentos.

  • Cada archivo agregado, renombrado, editado o eliminado debe ser registrado para no perder el orden de los cambios en nuestro proyecto; pensar en un cambio a la vez es fundamental.

En los siguientes artículos iremos viendo estos dos puntos a detalle, sobre todo el manejo de ramas a nivel básico usando branch, checkout, rebase y merge para lograr un flujo de trabajo mas flexible así como diversas técnicas y recomendaciones para un registro de cambios mas efectivo con commit, cherry-pick, reset, diff, show y log.

Una vez tengamos dominado el flujo de trabajo básico de manera local podremos continuar con la obtención, publicación y actualización de repositorios con remote, fetch, pull y push.

Github: Mi libreria

Siguiente capítulo: Ramificaciones e integración de cambios en Git

Alvaro CabreraAlvaro Cabrera para Maestros del Web.
Agrega tu comentario | Enlace permanente al artículo

Síguenos en: Twitter @maestros | Facebook Fan page

20 comentarios

Comentarios

  1. “…Asumo que ya tenemos instalado Git…”

    Quizás es demasiado asumir para un primer artículo sobre el uso de Git… :)

    1. Pero es un error que cometen muchos artículos introductorios. Para enseñarte a usar photoshop te enseñan como ir a adobe a bajarte el instalador, darle doble click, etc.

      Si tienes alguna duda puntual para instalarlo nos avisas.

  2. gseriche

    Asumir no es malo, muchos que utilizarían Git para trabajar o simplemente obtener apps saben más que hacer un ls o mv en *nix.
    Excelente tutorial.

    slds.

  3. Muy buena iniciativa, aunque sea inapropiado asumir cosas en un artículo introductorio. Al menos los usuarios que no usan *nix tendrían que descargar alguna terminal. Pero, tampoco está mal asumir cosas, si es que partimos de la idea de que la enseñanza de la tecnología es en sí misma violenta. Saludotes.

  4. Adán Sánchez

    Yo tampoco creo que es bueno asumir cosas :/

    Por otro lado creo que algo que es importante considerar, es que al utilizar git add . en mac os x se esta agregando incluso los archivos ocultos DS_STORE y en windows archivos thumbs, etc. Es algo que cuando empece me molestaba mucho y se soluciona con .gitignore

    Yo creo que algo verdaderamente util seria una introduccion a github a la par de git como esta http://net.tutsplus.com/tutorials/other/the-perfect-workflow-with-git-github-and-ssh/ ya que para ser solo introduccion a git esta muy incompleto.

  5. Andres Espinace

    Y no creo que sea necesaria tanta explicación … si bien es una introducción, no tienen por que dar todo en bandeja … la idea es dar las pautas para empezar, si no se sabe que hacer con algo, solo se debe buscar referente a eso, de eso se trata aprender.

    Excelente tutorial, estaré los siguientes.

  6. Asumir es lo mejor, eso le permite al autor extenderse mejor en el tema y así evitar detallar algunos pasos , no obstante al ver tanta queja seria buen punto que hagas un tuto de como GIT para asi dejar a todos contentos =) , buen tuto, good job!!!

  7. Quise decir un tuto de instalar GIT xD

  8. Entiendo su punto, pero definitivamente Git no es una herramienta sencilla que requiera habilidades simples. Hay que conocer de preferencia el manejo de la linea de comandos en sistemas *nix, incluso conozco personas mas valientes que lo instalan por su cuenta en sistemas Windows.

    En sistemas como Ubuntu instalar Git es pan comido, pero como digo, hay quienes les gusta aventurarse a instalar por su cuenta e investigar antes que asumir que requieren de un tutor.

    Git es una herramienta ruda que por si misma asume la habilidad del usuario.

    Gracias por sus comentarios.

    1. Es cierto!.. hace dias!… intente por propia cuenta.. si este tuto lo hubiera encontrado antes… mi resultado hubiera sido diferente!…buen tuto!.. ahora que lo instale en win… es completamente excelente!

  9. Perdona Álvaro, pero este tipo de comentários me recuerdan a otros de hace ya años…

    Aquellos que argumentaban los “gurús” de los entornos *nix para “justificar” (y justificarse) sobre la complejidad de instalación y uso de estos entornos… No hay complejidad, si no ganas de enseñar…

    De todos modos, mi reconocimiento para todos aquellos que, como tú, realizan un gran esfuerzo porque prefieren compartir su conocimiento antes que atesorarlo.

  10. camiand

    Pues quede un poco perdido instale en windows Git-1.7.7.1-preview20111027.exe y hay quede perdido soy un poco inexperto. Gracias.

  11. Excelente tutorial.

    Realmente es dificil entender GIT, he intentado algunas veces pero me he quedado con SVN, está muy bien escrito, seguro que continuaré con los siguientes post.

    Faltaria poner “Requisitos” , pienso que para entender GIT deben haber pasado por SVN y entender las diferencias en el transcurso del tutorial.

    Gracias

  12. camiand

    Listo entendido e instalado en windows buen tutorial.

  13. Jose Diaz

    Saludos

    Solo es necesario una unica linea para dar por incluido lo de la instalacion, para el caso de sistemas GNU/Linux.

    sudo apt-get install git

    Luego en la seccion help de Github indican como configurar Github para interactuar sin problemas con Git –> http://help.github.com/

  14. zarkiel

    Muy buen tutorial, con eso de asumir creo que es algo obvio, el titulo del manual dice “primeros pasos con git”, no “instalación de git” además ahora en los sistemas Linux ya viene incorporado asi que no creo que haya problemas por esa parte.

  15. Fab

    Gracias por compartir, la primera pregunta es correcta ¿Como lo consigo? yo creo que la segunda debió ser ¿Como lo instalo? y seguir con el uso básico…

Los comentarios de este post están cerrados. Si quieres seguir la discusión, debatir, criticar, sugerir o expandir el tema te invitamos a hacerlo en tu propio blog, en twitter o donde puedas publicar. No olvides enlazar a este post para que sigamos la conversación y se genere un trackback.