Git

Git

Git

Git es un sistema de control de versiones de software libre diseñado para manejar desde proyectos pequeños hasta muy grandes con rapidez y eficiencia.

Git es facil de aprender y es liviano con rápido desempeño. Supera a software similares como Subversion, CVS, Perforce y ClearCase gracias a características como manejo de ramas locales, areas de "staging" y múltiples flujos de trabajo.

Git realiza un control de versiones del código, esto quiere decir que almacena el código escrito en todas sus veriones haciendo un registro de los cambios realizados, cuando y quien los hizo. Es posible además volver a un estado anterior del código. Git realiza un registro de los cambios en el código y almacena un snapshot del código pudiendo regresar a una versión previa con facilidad.

Aquí puede descargar la versión de Git que corresponda para su sistema:

Mini Tutorial Git

Estados de Git

Git tiene tres estados para el código:

  1. Working Directory: El directorio de trabajo, lugar donde se encuentra el código que estamos escribiendo.

  2. Staging Area: Archivos de código listos para ser llevados al repositorio.

  3. Respository: Archivos dentro del repositorio.

Configuración inicial de Git

Git está disponible para instalar en Windows, Linux y macOS. Descarge e instale la versión que corresponda para su sistema operativo.

Una vez instalado, puede acceder a Git a través de la terminal en Linux y macOS o bien a través de GitBash en Windows.

Recién instalado Git, es necesario configurar el nombre y correo del usuario. El siguiente comando asignará el nombre de usuario, este nombre es el que quedará registrado en cada commit que se haga en el repositorio.


  $ git config --global user.name "Juan Perez"
      

Si ejecuta el comando sin argumentos, mostrará el nombre que se encuentra configurado actualmente:


  $ git config --global user.name
      

Para registrar el correo del usuario el proceso es similar, el comando es el siguiente:


  $ git config --global user.email "juan.perez@correo.com"
      

Si ejecuta el comando sin argumentos, mostrará el correo que se encuentra configurado actualmente:


  $ git config --global user.email
      

La terminal/WindowsBash puede mostrar los resultados de Git en colores, esto facilita su lectura. Para habilitar esta característica basta con ejecutar el comando:


  $ git config --global color.ui true
      

Para ver la configuración actual de Git, ejecute el siguiente comando:


  $ git config --global --list
      

  $ cat .gitconfig
      

Comenzando con Git

El comando git help muestra información del manual de git para algún comando específico.


  $ git help comando
      

El comando git init inicializa el proyecto. Indica a Git que este es el "Working Directory", que este directorio tiene el código que habrá de guardarse en el repositorio. Debe usar este comando cada que comienza un proyecto nuevo.


  $ git init
      

El comando git stauts muestra el estado actual del repositorio.


  $ git status
      

Añadir archivos al Staging Area

Para añadir archivos al Staging Area se usa el comando git add. Puede agregarse un archivo o varios a la vez.

El siguiente comando añade el archivo file.txt al staging:


  $ git add file.txt
      

El siguiente comando añade todos los archivos en el directorio actual:


  $ git add -A
      

Añadir archivos al Repository

Para añadir archivos al Repository se utiliza el comando git commit. Este comando permite agregar un mensaje, el cual nos permite especificar el cambio que hemos realizado en el código. Este mensaje es para nosotros mismos como desarrolladores, ya que en un futuro que consultemos los cambios, podremos saber con precisión que cambio fue realizado en esa etapa del desarrollo del código. Por esa razón se recomienda que el mensaje sea claro y conciso.


  $ git commit -m "Mensaje claro y conciso que describe el cambio en el código"
      

Una vez que se haga algún cambio en el código o se agreguen archivos, haga un git status y este indicará que el código en el Working Directory difiere del que se encientra en el Repository. Este será el momento para hacer un git add para los archivos modificados y un git commit nuevamente.

Es posible utilizar el comando git commit sin más argumentos. Esto llevará los cambios del Staging Area al Repository, pero dado que no se especificó un mensaje, se abrirá el editor por defecto en el sistema (vi en los sistemas *NIX) para escribir el mensaje correspondiente para el commit.

Bitácora de Cambios

Uno de las grandes ventajas de utiliar Git es que guarda un registro de los cambios y un snapshot del código en el momento del commit. Para ver el registro se utiliza el comando git log.


  $ git log
      

Ver estados anteriores del código

El comando git checkout permite ver una versión específica del código para la ocurrencia de un commit específico. Se dice que este comando permite "viajar en el tiempo" del código. Este comando requiere de un identificador SHA (Secure Hash Algorithm) del commit, el cual podemos ver en la bitácora. Por ejemplo:


  $ git checkout [<commit>]
      

Este comando llevará el código al estado en el que se encontraba al momento de haber hecho el coommit correspondiente al ID. De esta forma podremos examinar el código en ese momento y llevar a cabo cualquier acción que deseemos con el.

Si desearamos viajar nuevamente a otro estado anterior del código podríamos hacerlo con git chechout ID, de acuerdo al ID específico a donde quisieramos ir. Por otro lado, si quisieramos regresar al último commit realizado (antes del primer git checkout), basta con escribir:


  $ git checkout master
      

Regresar a estados anteriores del código.

Una de las funcionalidades de Git es que permite ver y regresar a estados anteriores del código. Esto es útil por si algún commit tuviera un error peligroso o cambios no deseados. Utilice esta instrucción con precaución.

Existen cinco tipos de reset: soft, mixed, hard, merge y keep. A continuación se describne los más comunes:

  1. soft: Mantiene los cambios de nuestros archivos intacto, simplemente es para que Git tenga presente que está en otro commit.
  2. mixed: Mantiene nuestros archivos, pero limpia el index de git de las cambios realizadas.
  3. hard: Elimina todo los cambios que tenemos en nuestros archivos para dejarlo exactamente igual que en el repositorio.

GitHub

GitHub

GitHub es una plataforma de desarrollo colaborativo para alojar proyectos utilizando el sistema de control de versiones Git. Utiliza el framework Ruby on Rails por GitHub, Inc. (anteriormente conocida como Logical Awesome).

GitHub es una plataforma de desarrollo inspirada en su forma de trabajo. Usted puede almacenar y revisar código, administrar proyectos y construir software desde código abierto hasta empresarial junto a millones de desarrolladores.

Desde enero de 2010, opera bajo el nombre de GitHub, Inc. El código se almacena de forma pública, aunque también se puede hacer de forma privada, creando una cuenta de pago.

GitHub es un sitio que crea una comunidad de desarrolladores, se puede decir que es la red social de los desarrolladores.

MiniTutorial Git + GitHub

Clonar un repositorio

Si deseamos descargar todos los archivos de código de un proyecto que se encuentra en GitHub, podemos hacer una copia a través del comando:


  $ git clone URL
      

Este comando es útil si nos interesa obtener el código y no necesariamente hacer contribuciones.

Manipular repositorios remotos

Para vincular un proyecto de código local a un repositorio remoto en GitHub se utiliza el comando git remote.


  $ git remote add origin URL_Repo
      

Este comando establecerá un vinculo entre el código del repositorio local origin con el repositorio remoto que se encuentra en GitHub a través de URL_Repo.

El siguiente comando mostrará si existe un vinculo entre el repositorio local y uno remoto:


  $ git remote -v
      

El siguiente comando permite eliminar el vinculo que exista entre el repositorio local y remoto:


  $ git remote remove origin
      

Se puede comprobar el efecto de estas operaciones con el comando git remote -v.

El comando git push permite subir el código que se encuentra en el repositorio local al repositorio remoto en GitHub.


  $ git push origin master
      

El comando solicitará el username y password de la cuenta de GitHib donde se encuentra el repositorio remoto.

El comando git push origin master puede ejecutarse cada vez que se hagan cambios en el código, de manera que los repositorios local y remoto se encuentren en sincronía.

Tenga en cuenta que este comando sincroniza la rama master del repositorio local con el repositorio remoto en GitHub.