Guía Git en español
Git no puede faltar en la lista imprescindible de herramientas útiles para todos los desarrolladores web.
Git es, de hecho, una herramienta indispensable para todo desarrollador porque hace que el flujo de trabajo sea más organizado y facilita la cooperación de los desarrolladores web en la realización de proyectos. Pero, ¿cómo funciona Git?
¡Averigüémoslo juntos!
Lo que vas a aprender
En esta guía, descubrirás qué es Git, el sistema de control de versiones esencial para organizar el flujo de trabajo y para la cooperación de los desarrolladores web, y cómo usarlo mejor dominando cada función.
- Introducción a Git para developers
- Tu primer commit en Git
- Terminología y conceptos de Git
- Crear y configurar un repository en Git
- Guardar cambios en Git
- Consultar el estado en Git
- Deshacer cambios en Git
- Reescribir la history en Git
- Acceso directo a comandos frecuentes en Git
- Introducción a los repository "remote" en Git
- Sincronizar cambios locales y remotos en Git
- Uso de los branch en Git
- Resolver conflictos de merge en Git
- Git workflow y estrategias de branching en Git
- Convenciones sobre commit message y tag en Git
- Merging vs rebasing en Git
1
Introducción a Git para developers
1¿Qué es Git?
Git es un sistema de control de versiones gratuito y open-source (version control system o VCS, a veces también denominado source control management system o SCM), creado por Linus Torvalds (el "padre" de Linux) en 2005. Como cualquier control de versiones system, Git te permite gestionar el historial de todos los cambios realizados en tu códig...
Sigue leyendo2Nacimiento de Git
Pero, ¿cómo nació Git? El "nacimiento" de Git está relacionado, como sucede a veces en el mundo del open-source, a la necesidad de tener una alternativa libre a una herramienta propietaria. En 2005, el desarrollo del kernel de Linux había alcanzado, en términos de líneas de código, un tamaño considerable y los di...
Sigue leyendo3Principales características de Git
La historia del nacimiento de Git nos permite entender cuáles son las principales características de esta herramienta. Como sistema de control de versiones, el propósito de Git es permitir la gestión de los cambios realizados en una colección de información, ya sea el código fuente de una aplicación, la p&aacu...
Sigue leyendo4Línea de comando UI en Git
Git nació como una herramienta para ser utilizada desde la línea de comandos (o terminal), por lo tanto, junto con otras herramientas necesarias en el día a día de un desarrollador web, como editores, IDE, compiladores... etc. Desde la línea de comando, el ejecutable de Git permite ejecutar uno de los varios comandos disponibles, pasando la...
Sigue leyendo
2
Tu primer commit en Git
5Cómo instalar Git
Antes de entrar en detalles sobre cada uno de los diversos comandos que ofrece Git, intentemos usar un conjunto mínimo de comandos útiles en la vida cotidiana. Cómo instalar Git Es posible que en tu ordenador esté ya instalado Git, ya que forma parte del conjunto de aplicaciones y herramientas que suelen instalarse como paquete para los desarrolladores web de...
Sigue leyendo65 comandos Git para desarrolladores individuales
Como hemos ya mencionado, Git es un excelente aliado tanto para el trabajo del singular desarrollador como para la cooperación de equipos de desarrolladores web. Ahora veamos los 5 comandos principales que usará el desarrollador individual y algunos de sus argumentos. crear una nueva directory en Git mkdir primer-proyecto entrar en la directory en Gi cd ...
Sigue leyendo75 comandos Git para desarrollar en colaboración
Como hemos ya anticipado, una de las fortalezas de Git es su soporte para el desarrollo de proyectos distribuidos. Si bien Git ofrece varias posibilidades para administrar el desarrollo colaborativo, vamos a intentar presentar el caso de un desarrollador web que quiere hacer su contribución a un proyecto compartido que ya comenzó, analizando aquí también los comand...
Sigue leyendo
3
Terminología y conceptos de Git
8Repository en Git
Antes de entrar en más detalles, es recomendable aclarar algunos conceptos básicos de Git y cómo afectan el flujo de trabajo real. Repository en Git Un repository Git rastrea y guarda el historial de cambios realizados en los archivos en el directory donde se inicializó el repository. En la práctica, el repository Git del proyect...
Sigue leyendo9Commit en Git
Un commit in Git representa un snapshot (instantánea) del repository en un momento específico. Aunque esta definición puede parecer banal, vale la pena subrayar que: a diferencia de otras version control system, el commit en Git no solo almacena las diferencias entre dos versiones sucesivas del contenido del directory, sino que guarda la instant&aacut...
Sigue leyendo10Working Copy en Git
El concepto de Working Copy en Git (llamado también working directory o working tree) está relacionado con el hecho de que un repository Git gestiona la secuencia de snapshot (commits) de determinados archivos contenidos en un directory. Para entender que es y como funciona la working copy es mejor si lo vemos con un ejemplo: Cuando se cl...
Sigue leyendo11Staging Area en Git
La staging area en Git es el lugar "virtual" para agregar los cambios presentes en la working copy que se desea guardar como un commit. También para el staging area en Git cabe considerar que es un concepto ligado al funcionamiento básico de Git (secuencia de snapshot extraídas a lo largo del tiempo en una working area). Muy a menudo, de hecho, n...
Sigue leyendo12Branch en Git
Hemos dicho anteriormente que Git compara los archivos presentes en la working copy con respecto al commit de la que se extrajeron para comprender en qué estado se encuentran. Sin embargo, con mayor frecuencia oiremos (y comenzaremos a decir también) que cualquier cambio en la working copy es con respecto al branch en el que estoy trabajando. Tratemos de aclarar esto: ...
Sigue leyendo13Remote en Git
El último concepto básico a aclarar es el de Remoto(s) en Git, entendido en el sentido de un repository remoto al que mi repository local está conectado de alguna forma. Hemos visto que podemos copiar un repository preexistente en un servidor remoto a nuestra máquina usando git clone. Cuando git clone crea la copia local, también guarda ...
Sigue leyendo
4
Crear y configurar un repository en Git
14Inicializar un nuevo repository con git init
En esta sección, profundizaremos en cómo configurar un repository de Git. En particular, veremos cómo inicializar un repository para un proyecto nuevo o existente. Inicializar un nuevo repository con git init git init es el comando que hay que usar para realizar el setup inicial de un repository. Ejecutar este comando crea el subdirectorio .gi...
Sigue leyendo15Crear una copia de un repository remoto en Git con git clone
git clone es el comando que se utiliza para crear una copia o clonación de un repository ya existente, en particular disponible a través de una conexión de red. La clonación de un repository remoto en la máquina local es una operación única; una vez realizada la copia local, ya no es necesario ejecutar git clone (veremos más...
Sigue leyendo16Configurar las opciones de Git con git config
El comando git config permite establecer algunos valores predeterminados que luego serán utilizados por los otros comandos de Git. Estos valores pueden ser globales (es decir, válidos para todos los repository de git en tu ordenador) o por repository (es decir, aplicados solo al repository en el que estás trabajando). El uso más simple de&nbs...
Sigue leyendo
5
Guardar cambios en Git
17El comando Git add en Git
Cuando se trabaja con un version control system como Git, el concepto de "guardar cambios" tiene más matices que guardar un archivo en un procesador de textos o editor de archivos. Ya hemos visto cómo en Git la acción "guardar" se puede lograr a través de un compromiso. Veamos con más detalle todos los comandos út...
Sigue leyendo18El comando Git commit en Git
El comando git commit fija en la historia del proyecto un snapshot del estado actual, es decir, una versión "segura" o relevante" del mismo proyecto. Los cambios incluidos en el guardado son aquellos que se han incluido explícitamente en la staging area a través del comando git add. Si se ejecuta sin opciones, se abre un editor de texto (configurabl...
Sigue leyendo19El comando Git diff en Git
git diff es un comando Git multiuso que permite ver las diferencias entre dos data source, ya sean archivos, commit, branch u otros. En esta sección, veremos los usos más típicos de git diff y explicaremos el formato estándar en el que se muestran estas diferencias. Aquí hay un ejemplo práctico usando un repositorio creado desde cero: $ mkdir ...
Sigue leyendo20El comando Git stash en Git
El comando git stash se usa para dejar de lado todos los cambios actuales no confirmados, para recuperarlos en un momento posterior. En la práctica, se utiliza en todas aquellas ocasiones en las que se han realizado una serie de cambios "WIP" (work in progress), aún no es momento de comprometerse, pero es necesario volver temporalmente a una situación "...
Sigue leyendo21.gitignore : los archivos ignored en Git
Anteriormente hemos visto que Git considera los archivos presentes en la working copy distinguiéndolos en tracked (archivos que se han enviado al repository o incluidos en el staging area) y untracked (lo opuesto al anterior). A estos dos grupos podemos añadir un tercero, los archivos ignored, es decir, los archivos para los que Git ha sido expresamente i...
Sigue leyendo
6
Consultar el estado en Git
22El comando Git status en Git
El comando git status muestra el estado actual de la working directory y de la staging area, permitiendo ver que archivos modificados se han añadido a la staging area, que archivos modificados no han sido añadidos a la staging area y que archivos no se rastrean en el repository. El output de git status es uno de los más ricos de informaci&...
Sigue leyendo23El comando Git log en Git
El comando git log permite visualizar el historial de los commit, filtrarlo y buscar cambios específicos. Así como git status opera en la working directory y la staging area, git log opera en la history de los commit. Git log ofrece muchas opciones para personalizar las visualizaciones de los commit y para filtrarlas. A continuación, ...
Sigue leyendo24El comando Git tag en Git
Git permite agregar una etiqueta a un commit específico, de modo que se pueda usar esta etiqueta como referencia para un punto específico en el historial del repository. El uso típico de las etiquetas es marcar un determinado lanzamiento o versión, para poder acceder a ella más tarde con facilidad. De hecho, a diferencia de los branch, una vez que ...
Sigue leyendo25El comando Git blame en Git
Para concluir con el elenco de los comando útiles en Git para consultar el estado y la historia de un repository encontramos en comando git blame. La traducción literal del verbo "to blame" es "inculpar" y, de hecho, este comando git se usa para responder a la pregunta "¿quién ha cambiado esta línea?" Es útil en el cas...
Sigue leyendo
7
Deshacer cambios en Git
26El comando Git checkout en Git
Git no ofrece funciones de "deshacer" similares a las de programmi consumer, pero ofrece diferentes comandos que permiten volver sobre sus pasos y administrar la secuencia de commit en la historia como si fuese una máquina del tiempo. El comando Git checkout en Git Sabemos que Git almacena una serie de snapshot de un proyecto llamados commit, cada commit tiene su propio iden...
Sigue leyendo27El comando Git revert en Git
El comando git revert in Git permite "eliminar" un cambio no deseado del repository. Sin embargo, dado que Git está diseñado para preservar el historial de un proyecto y la integridad del historial de revisiones, el comando revert funciona agregando un nuevo commit que es exactamente lo contrario del commit que se desea eliminar. Supongamos que tenemo...
Sigue leyendo28El comando Git reset en Git
De manera similar al anterior, el comando git reset en Git permite deshacer los commit de un repository, pero lo hace destructivamente. En particular, git reset puede operar en el historial de los commit, por lo tanto, permite modificar el historial de un branch específico. Es un comando que debes usar con cuidado si no quieres perder parte de tu trab...
Sigue leyendo29El comando Git rm en Git
El comando git rm en Git se usa para indicar a Git que elimine un archivo del seguimiento; es el comando opuesto y complementario a git add. Obviamente, en virtud de cómo funciona Git, siempre será posible acceder a las distintas versiones del archivo consultando los diversos compromisos en los que ese archivo aún estaba incluido entre los incluidos en ...
Sigue leyendo
8
Reescribir la history en Git
30La opción Git commit –amend en Git
Hemos dicho varias veces que el objetivo principal de Git es evitar la pérdida en un cambio de commit (es decir, guardado en el historial). Por otro lado, Git también está diseñado para ofrecer el control más completo sobre tu workflow de desarrollo, incluida la capacidad de definir exactamente el historial de tu proyecto. Tomemos, por ejemplo, este histo...
Sigue leyendo31Git rebase –interactive en Git
Una aclaración: el uso del comando git rebase en Git que veremos en esta sección se centrará únicamente en la posibilidad que ofrece de modificar uno o más commit más antiguos que el último guardado, es decir, la ejecución en modo interactive. Veremos el modo estándar de git rebase (y lo que realmente significa) en otro...
Sigue leyendo
10
Introducción a los repository "remote" en Git
33Repository compartido en Git
En la sección introductoria, dijimos que una de las ventajas de Git es que ofrece un modelo de colaboración distribuida. También ya hemos explicado cómo "recuperar" un proyecto preexistente alojado en un servidor remoto usando el comando git clone. Entremos en más detalles sobre el uso de un repositorio remoto por parte de múltiples colaborado...
Sigue leyendo34El modelo Fork & pull
El modelo de repositorio compartido (remoto) es la forma más fácil de colaborar en el desarrollo de un proyecto usando Git. Hay un único repositorio remoto utilizado por todos los colaboradores para enviar y recibir commit. Veamos otro modelo, promovido por el servicio GitHub, donde existen múltiples repositorios remotos con diferentes permisos para los colaboradores...
Sigue leyendo35El comando Git remote en Git
Las descritas en los capítulos anteriores y otras formas de colaboración son posibles gracias a los tracked repository (o repositorios remotos) que se pueden conectar a cada repositorio de Git usando el comando git remote. El comando git remoto de git en realidad no realiza el acceso real ni la sincronización con estos repositorios remotos...
Sigue leyendo36Los principales repository remote de Git: Github, Gitlab y Bitbucket
Después de haber explorado los modelos de colaboración y de desarrollo compartido en Git, veamos cuales son sus principales repository online. GitHub Es un servicio de intercambio de archivos o códigos para colaborar con diferentes personas. GitHub es un popular software de control de versiones. Esto es útil cuando más de una persona está trabajan...
Sigue leyendo
11
Sincronizar cambios locales y remotos en Git
37El comando Git fetch en Git
Hemos visto cómo Git permite que cada repositorio realice un seguimiento de los repositorios (remotos) a los que está conectado a través del comando remoto git. La sincronización de cambios entre diferentes repositorios se realiza mediante otros comandos, cada uno de los cuales tiene su propia responsabilidad específica. El comando Git fetch en Gi...
Sigue leyendo38El comando Git push en Git
El comando git push en Git se utiliza para cargar cambios locales en un repositorio remoto. De esta manera, los commit locales se ponen a disposición de otros colaboradores del proyecto, quienes pueden recuperarlos a través de una búsqueda e incorporarlos a sus respectivos repositorios locales. En el modo estándar, git push envia solo los cam...
Sigue leyendo39El comando Git pull en Git
Al comienzo de esta sección, vimos cómo obtener contenido nuevo de un repositorio remoto mediante el comando git fetch. Ahora veamos con más detalle cómo devolver estos cambios a la propia working copy usando el comando git pull. Fusionar cambios del repositorio remoto al repositorio local es una tarea común en los flujos de trabajo colaborativos basados ...
Sigue leyendo
12
Uso de los branch en Git
40El comando Git branch en Git
Git almacena una rama como referencia a un commit. En este sentido, una rama representa la punta de una serie de commit, no es un contenedor para los commit. El historial de una rama se extrapola a través de las relaciones entre commit, que recordamos es la fusión de una instantánea de los contenidos del repositorio en un momento determinado y la referencia al c...
Sigue leyendo41El comando Git checkout en Git
Ya hemos adelantado algunos usos del comando git checkout, ahora veamos cómo usarlo con más detalle en relación con el "switch" de una rama a otra. Básicamente, el checkout de una rama actualiza los archivos en la working directory para que coincidan con la versión almacenada en esa rama y le indica a Git que registre todas los commit nuevos en ...
Sigue leyendo42El comando Git merge en Git
El comando git merge en Git se utiliza para combinar varias secuencias de commit en un historial unificado. En los casos de uso más frecuentes, git merge se usa para combinar dos ramas. Por lo general, especialmente para aquellos que usan plataformas como GitHub o GitLab como servidores para el desarrollo compartido, las operaciones de merge s...
Sigue leyendo
13
Resolver conflictos de merge en Git
43Resolver un merge conflict en Git
Mencionamos anteriormente que pueden ocurrir conflictos cuando se ejecuta un git pull, git merge o git rebase en Git que impiden que Git complete automáticamente la operación. Un conflicto en el sentido de sistemas de control de versiones es una situación en la que el sistema intenta integrar dos historias diferentes que han realizado...
Sigue leyendo44Entender mejor el contenido de los commit durante un conflicto de merge en Git
Al resolver un conflicto de fusión en Git es particularmente importante comprender qué sucedió en las dos versiones diferentes y si los dos contenidos diferentes pueden reconciliarse y cómo. De hecho, las dos versiones pueden contener código que se comporte de manera muy diferente y es importante comprender lo que se está aprobando antes de co...
Sigue leyendo
14
Git workflow y estrategias de branching en Git
45Workflow Git centralizado
Git es el sistema de control de versiones más utilizado en el mundo, también gracias a su extrema flexibilidad para adaptarse al flujo de trabajo de cada individuo y del equipo. Con el tiempo, han surgido buenas prácticas y recomendaciones sobre el uso eficiente de Git, para poder trabajar de manera consistente y productiva. Estas prácticas se denominan "work...
Sigue leyendo46Workflow Git feature branching
Las ramas se utilizan para aislar el desarrollo de una función o corrección de la rama del repositorio principal. Solo una vez que se completa el desarrollo, la función vuelve a la rama principal. Las feature branch en Git se cargan en el único repositorio remoto y varios desarrolladores pueden contribuir a la implementación de la función. ...
Sigue leyendo47Workflow Git trunk-based
El Workflow Git trunk-based es, en cierto modo, la unión de los dos anteriores y busca unir diferentes necesidades y reflexiones relacionadas con el desarrollo de software moderno. El workflow trunk-based in Git sigue la indicación de facilitar el desarrollo concurrente en una sola rama principal, y ofrece varias sugerencias sobre cómo lograr este result...
Sigue leyendo48Enfoque “forking” en Git
Los workflow vistos hasta ahora tenían en común el hecho de que todavía tenían un único repositorio remoto de referencia, que eventualmente podría usar las ramas para aislar desarrollos. En el enfoque de “forking”, en cambio, se crea un repositorio separado del principal, creando así una estructura de colaboración nueva y sep...
Sigue leyendo49Gitflow en Git
Una última sección dedicada al Git workflow conocida como "GitFlow". Como dijimos al comienzo de esta sección y esta guía, Git en sí mismo no es prescriptivo sobre el uso de ciertas funciones, sino que permite que el desarrollador web y el equipo encuentren el flujo que mejor se adapte a sus necesidades. GitFlow fue quizás el prim...
Sigue leyendo
15
Convenciones sobre commit message y tag en Git
50Mensajes de commit en Git
Si bien a lo largo del tiempo se han identificado una serie de indicaciones relacionadas con el uso de ramas y estrategias de fusión con "git workflow", no debemos olvidar que las estrategias y convenciones vinculadas al uso de mensajes de commit también contribuyen a un uso productivo de Git y el uso de etiquetas para el control de versiones. Incluso en este aspecto, Git n...
Sigue leyendo51Tagging & Versioning en Git
Siempre teniendo en cuenta que Git en sí mismo no es prescriptivo en el uso de etiquetas, son etiquetas que apuntan a un solo commit, para una gestión eficiente de un proyecto, es recomendable definir algunas pautas relacionadas con el uso de etiquetas en Git. Podemos decir que las etiquetas de Git se suelen utilizar para indicar una determinada versión o lanzamie...
Sigue leyendo
16
Merging vs rebasing en Git
52La opción merge en Git
Después de introducir los comandos git rebase en Git y git merge en Git y después de presentar posibles estrategias de workflow, veamos con más detalle cómo y por qué elegir uno u otro comando en función del proyecto, la necesidad y el propósito que se quiere lograr. Muy a menudo, de hecho, la actividad de rebase se etiqu...
Sigue leyendo53La opción rebase en Git
Al elegir la opción de rebase en Git para recuperar los cambios principales en las funciones, se "mueve" toda la función de rama y se recrean los commit individuales que formaban parte de ella. git checkout feature git rebase main Opción Rebase La ventaja de la opción de rebase en Git es precisamente la posibilidad de o...
Sigue leyendo