Freivin Campbell

Git

8 de septiembre del 2016 | 10 Minutos leyendo

Git fue creado 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, es decir Git nos proporciona las herramientas para desarrollar un trabajo en equipo de manera inteligente y rápida y por trabajo nos referimos a algún software o página que implique código el cual necesitemos hacerlo con un grupo de personas.

configuración

Descarga git para Windows

Descarga git para Linux

Descarga git para OSX

Algunas de las características de Git son:

  • 1. Realmacenamiento periódico en paquetes.

  • 2. Gestión eficiente de proyectos grandes.

  • 3. Gestión distribuida; Los cambios se importan como ramas adicionales y pueden ser fusionados de la misma manera como se hace en la rama local.

  • 4. Rapidez en la gestión de ramas, debido a que Git nos dice que un cambio será fusionado mucho más frecuentemente de lo que se escribe originalmente.

Órdenes básicas

git init

Iniciar un repositorio vacío en una carpeta específica.

git fetch

Descarga los cambios realizados en el repositorio remoto.

git merge <nombre_rama>

Fusiona la rama en la que te encuentras parado, los cambios realizados en la rama “nombre_rama”.

git pull

Recibe los cambios de la rama que te encuentres parado.

git commit -am "<mensaje>"

Confirma los cambios realizados. El “mensaje” generalmente se usa para asociar al commit una breve descripción de los cambios realizados.

git push origin <nombre_rama>

Sube la rama “nombre_rama” al servidor remoto.

git status

Muestra el estado actual de la rama, como los cambios que hay sin commit.

git add <nombre_archivo>

Añade el archivo “nombre_archivo”.

git add .

Añadir todos los archivos del directorio

git checkout -b <nombre_rama_nueva>

Crea una rama a partir de la que te encuentres parado con el nombre “nombre_rama_nueva”, y luego salta sobre la rama nueva, por lo que quedas parado en ésta última.

git checkout -t origin/<nombre_rama>

Si existe una rama remota de nombre “nombre_rama”, al ejecutar este comando se crea una rama local con el nombre “nombre_rama” para hacer un seguimiento de la rama remota con el mismo nombre.

git branch

Lista todas las ramas locales.

git branch -a

Lista todas las ramas locales y remotas.

git branch -d <nombre_rama>

Elimina la rama local con el nombre “nombre_rama”.

git push origin :<nombre_rama>

Elimina la rama remote con el nombre “nombre_rama”.

git remote prune origin

Actualiza tu repositorio remoto en caso que algún otro desarrollador haya eliminado alguna rama remota.

git reset --hard HEAD

Elimina los cambios realizados que aún no se hayan hecho commit.

git revert <hash_commit>

Revierte el commit realizado, identificado por el “hash_commit”.

Buenas prácticas

Cada desarrollador o equipo de desarrollo puede hacer uso de Git de la forma que le parezca conveniente. Sin embargo una buena práctica es la siguiente:

Se deben utilizar 4 tipos de ramas: Master, Development, Features, y Hotfix.

  • Master:

Es la rama principal. Contiene el repositorio que se encuentra publicado en producción, por lo que debe estar siempre estable.

  • Development:

Es una rama sacada de master. Es la rama de integración, todas las nuevas funcionalidades se deben integrar en esta rama. Luego que se realice la integración y se corrijan los errores (en caso de haber alguno), es decir que la rama se encuentre estable, se puede hacer un merge de development sobre la rama master.

  • Features:

Cada nueva funcionalidad se debe realizar en una rama nueva, específica para esa funcionalidad. Estas se deben sacar de development. Una vez que la funcionalidad esté pronta, se hace un merge de la rama sobre development, donde se integrará con las demás funcionalidades.

  • Hotfix:

Son bugs que surgen en producción, por lo que se deben arreglar y publicar de forma urgente. Es por ello, que son ramas sacadas de master. Una vez corregido el error, se debe hacer un merge de la rama sobre master. Al final, para que no quede desactualizada, se debe realizar el merge de master sobre development.

Espero que hayas aprendido algo nuevo y útil. :smile: