Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development

Control de versión fácil con Git

by
Difficulty:IntermediateLength:LongLanguages:

Spanish (Español) translation by CYC (you can also view the original English article)

¿Alguna vez has trabajado en un proyecto que era tan difícil de manejar y tuviste miedo de actualizar un archivo o agregar una función? Tal vez el problema era que no estabas usando un sistema de control de versiones. En el tutorial de hoy, aprenderemos los fundamentos de lo que podría ser el mejor VCS en el mundo: Git.

¿Qué es Git?

Git es una herramienta de gestión de código abierto; fue creado por Linus Torvalds cuando estaba construyendo el kernel de Linux. Debido a esos orígenes, necesitaba ser muy rápido; y esto lo es, y que fuera fácil de conseguir también. Git te permite trabajar en tu código con la tranquilidad de que todo lo que haces es reversible. Esto hace que sea fácil experimentar con nuevas ideas en un proyecto y no preocuparse de romper nada. El Git Parable, de Tom Preston-Werner, es una gran introducción a los términos e ideas detrás de Git.

¿Por qué debo usar Git?

Definitivamente debes utilizar un sistema de control de revisión; como ya hemos dicho, esto te da la libertad de hacer lo que quieras con tu código y que no te preocupes por romperlo. Así que si te has dado cuenta de los beneficios de usar un sistema de control de revisión, ¿por qué deberías usar git? ¿Por qué no SVN o Perforce u otro? Para ser honesto, no he estudiado las diferencias muy de cerca; echa un vistazo a WhyGitIsBetterThanX.com para obtener información útil.

¿Cómo puedo configurarlo?

Git es bastante fácil de conseguir: en un Mac, es probablemente más fácil de usar el git-osx-installer. Si tienes MacPorts instalado, es posible que desees obtener Git a través de él; puedes encontrar instrucciones en el sitio de ayuda de GitHub. (Y sí, hablaremos de GitHub). En Windows, la forma más sencilla de comenzar a rodar es usar el instalador msysgit. Sin embargo, si tienes Cygwin, puedes usar Git a través de allí también.

¿Cómo uso Git?

Por ahora deberías haber instalado Git; si estás en un Mac, abre una terminal; si estás en Windows, abre el Git Bash (de msysgit) o el prompt de Cygwin. A partir de aquí, no debe haber diferencias de Sistemas Operativos.

Configuración

Comenzaremos haciendo un poco de configuración. Cada commit que realices tendrá tu nombre y dirección de correo electrónico para identificar el 'propietario' del mismo, por lo que debes comenzar dándole esos valores. Para ello, ejecuta estos comandos:

También es bueno habilitar algunos colores de texto, sólo para facilitar la lectura en la terminal.

Git init

Ahora que Git sabe quién eres, imaginemos que estamos creando una simple aplicación web PHP. (Por supuesto, cuanto más grande es el proyecto, más brillante es y Git resalta, pero estamos aprendiendo las herramientas, ¿no?) Tenemos un directorio vacío llamado 'mySite'. Primero enfócate en ese directorio (usando el comando cd). Para empezar con Git, necesitas ejecutar el comando git init. Como es de suponer, esto inicializa un repositorio de Git en esa carpeta, agregando una carpeta .git dentro de ella. Un repositorio es como un libro de historia de código. Mantendrá todas las versiones anteriores de tu código, así como la actual.

Git Init

Observa que a tu ruta de acceso de la terminal se le agrega un (master). Esa es la rama en la que estás trabajando. ¿Rama? Piensa en tu proyecto como un árbol; puedes crear diferentes características en diferentes ramas, y todo permanecerá separado y seguro.

Git add

Hemos empezado a trabajar en nuestra aplicación.

Files

Antes de ir más lejos, debemos hacer nuestro primer compromiso. Un commit es simplemente un puntero a un punto en tu historia de código. Sin embargo, antes de que podamos hacer eso necesitamos mover al área de clasificación cualquier archivo que queramos que haga parte de este compromiso. El área de puesta en escena es un lugar para almacenar archivos para tu próximo commit; Tal vez no quieres comprometer todos tus cambios actuales, por lo que puedes poner algunos en el área de ensayo. Podemos hacerlo usando el comando add.

El . simplemente significa añadir todo. Podrías ser más específico si quisieras. 

Git commit

Ahora que hemos presentado nuestros archivos, vamos a comprometerlos. Esto se hace con el comando

Esto toma todos los archivos en nuestra área de puesta en escena y marca ese código como un punto en la historia de nuestro proyecto. Si no agregas ninguna opción al comando anterior, obtendrás algo como esto.

vim

Cada commit debe tener un mensaje de acompañamiento, para saber por qué se ha enviado ese código. Este editor te permite escribir tu mensaje, así como ver lo que está en este commit. De la imagen anterior, puedes ver que este commit está compuesto de cuatro nuevos archivos. El editor que estás utilizando para escribir el mensaje es Vim; si no estás familiarizado con vim, debes saber que tendrás que pulsar i (para insertar) antes de poder escribir tu mensaje. En la foto de arriba, he añadido el mensaje "Initial Commit". Después de escribir tu mensaje, pulsa escape y escribe: wq (para guardar y salir). Entonces verás que lo enviaste.

Commit Aftermath

Puedes utilizar algunas opciones para realizar 'commits' más rápidamente. En primer lugar, -m te permite agregar tu mensaje en línea.

Luego, -a te permite saltar el área de puesta en escena; bueno en realidad no. Git automáticamente pondrá todo en escena y confirmará todos los archivos modificados cuando uses esta opción. (Recuerda, no agregará ningún archivo nuevo). puedes usar comandos juntos como este:

Entonces, ¿cómo Git dice 'commits' aparte? En lugar de numerarlos, Git usa el contenido del código del commit para crear un hash SHA1 de 40 caracteres. La parte fantástica acerca de esto es que, ya que estás utilizando el código para crear el hash, no hay dos hashes en tu proyecto y será el mismo a menos que el código en los commits sea idéntico.

Git status

El comando git status te permite ver el estado actual de tu código. Acabamos de hacer un commit, por lo que git status nos mostrará que no hay nada nuevo.

status, clean

Si continuamos trabajando en nuestro proyecto imaginario, veremos que nuestro estado cambia. Voy a editar nuestro index.php y agregaré otro archivo. Ahora, ejecutar git status nos da esto:

Status, not clean

La actualización se divide en dos categorías: "modificado pero no actualizado" y "archivos sin seguimiento". Si ejecutamos

verás que ahora tenemos una sección de "cambios a ser entregados (committed)". Esta lista agregó los archivos al área de clasificación. Voy a entregar (commit) estos cambios con esto:

Ahora ejecutar git status nos muestra un directorio de trabajo ordenado.

Git branch / Git checkout

Aquí está un escenario: estamos trabajando felizmente en nuestro proyecto cuando de repente tenemos una gran idea. Esta idea es tan revolucionaria, que cambiará drásticamente nuestro proyecto. Tenemos que probarlo, pero no queremos tirar este código inseguro como primer borrador en nuestro código ya probado y genuino. ¿Qué hacemos? Aquí es donde git branch será inmensamente útil. Vamos a ramificar nuestro proyecto para que si nuestra gran idea no funciona, no se haga ningún daño.

Simplemente ejecutando la opción del comando sans listará nuestras ramas; ahora mismo, sólo tenemos la rama principal, con la cual cualquier repositorio git comienza. Para crear una nueva rama, añade el nombre de tu nueva rama después del comando.

Cuando creas una nueva rama, no te conectas a ella automáticamente. Ten en cuenta que en nuestra terminal todavía dice (master). Aquí es donde usamos las ramas amigas con el comando git checkout.

Git Branch

(Sugerencia: puedes crear una rama y cambiarla de una sola vez con este comando: git checkout -b nombre de la rama). Como puedes ver, ahora estamos en la rama bigIdea. Vamos a codificar una tormenta. Git status mostrará nuestro trabajo.

2 new files

Vamos a enviar nuestros cambios:

De acuerdo, suficiente de esta característica por ahora. Volvamos a nuestra rama principal; pero antes de hacerlo, quiero mostrarte nuestra carpeta de proyectos actuales.

Files, branch bigIdea

Ahora, vuelve a la rama principal (master); ya sabes cómo: git checkout master. Mira nuestra carpeta de proyectos nuevamente.

Files, branch master

No, no hice nada; esos dos archivos son sólo una parte de la rama bigIdea, por lo que ni siquiera saben que existen de la rama principal. Esto no sólo funciona para archivos completos, sino también para los cambios más pequeños dentro de los archivos.

Git merge

Bueno, entonces hemos estado trabajando duro en esa rama de bigIdea en nuestro tiempo libre. De hecho, después de otro compromiso, se ve tan dulce que hemos decidido que es lo suficientemente bueno para unirla a la rama principal. Entonces, ¿Cómo lo hacemos?

El comando git merge está hecho exactamente para este propósito. Mientras que la rama principal, le da a esto una oportunidad:

Es fácil. Ahora, todo en la rama bigIdea es una parte de la rama principal. Ahora puedes deshacerte de la rama bigIdea, si quieres.

Debo mencionar que si no has fusionado una rama, Git no te dejará suprimirlo con este comando; necesitarás usar una D mayúscula en la opción. Esto es sólo una medida de seguridad.

Git log / Gitk

Probablemente vas a querer ver tu historial de confirmación en algún momento durante tu proyecto. Esto se puede hacer fácilmente con el comando de registro.

Esto mostrará una lista de todos los 'commits' que has realizado en un proyecto, mostrándolos en orden inverso. Puedes conseguir un trozo ordenado de información aquí:

  • El autor del commit
  • El hasd del commit
  • La fecha y la hora
  • El mensaje
git log

Definitivamente informativo, pero bastante seco, ¿no? Podemos alegrar un poco las cosas con la opción gráfica.

git log --graph

Ahora podemos ver la estructura en una especie de árbol. Aunque no obtenemos sus nombres, podemos ver cada una de las ramas y qué commits se hicieron en ellas. Si estás acostumbrado a trabajar en una terminal, puedes estar bien con esto. Sin embargo, si (anterior a esta experiencia) la palabra terminal te golpea primero como algo mortal, respira tranquilo: hay una aplicación para eso. Prueba esto:

gitk

Este es el navegador gráfico del repositorio. Puedes navegar alrededor de tus commits, ver exactamente lo que se cambió en cada archivo durante un commit, y mucho más. (Te darás cuenta de que he añadido unos pocos commits de la fusión, sólo para hacer la estructura del árbol más reconocible).

GitHub

Ahora que tienes un conocimiento razonable de Git en tu cinturón, vamos a ver algunas de las partes colaborativas de Git. Git es una gran manera de compartir código con otros y trabajar en proyectos juntos. Existen varios sitios de alojamiento de repositorios de Git. Sólo veremos uno: GitHub.

GitHub Home Page
GitHub Sign Up

Ve a la página de registro de GitHub y crea una cuenta. Necesitarás una clave pública de SSH, así que vamos a crearla ahora mismo. (Nota: no necesitas la clave mientras te registras, puedes agregarla más tarde).

Abre tu terminal y escribe esto:

ssh

La opción t asigna un tipo, y la opción C agrega un comentario, tradicionalmente tu dirección de correo electrónico. A continuación, se te preguntará dónde guardar la clave. Apenas des en entrar, lo hará (esto guardará el archivo a la ubicación por defecto). Luego, ingresa una frase de acceso, dos veces. Ahora tienes una llave, y por tanto, vamos ahora a GitHub.

En primer lugar, obtén la clave del archivo.La terminal te habrá dicho dónde se almacenó la llave, así que abre el archivo, copia la clave (ten cuidado de no agregar ninguna nueva línea o espacio en blanco). Abre tu página de cuenta GitHub, desplázate a SSH Public Keys y haz clic en "Añadir otra clave pública". Pega esto en tu clave y guárdala. ¡Vas por buen camino! Puedes probar tu autenticación ejecutando esto:

Se te pedirá la frase de acceso. Para evitar tener que escribir esto cada vez que te conectes a GitHub, puedes automatizarlo. Podría decirte cómo hacerlo, pero probablemente, sin dudarlo, lo plagiaría. La Ayuda de GitHub tiene un artículo sencillo sobre cómo hacerlo.

Git Clone

Entonces como ya configuraste GitHub, vamos a tomar un proyecto. ¿Qué tal jQuery? Si vas al proyecto jquery en GitHub, encontrarás la URL clon de git. Ejecuta esto:

git clone

Esto crea una carpeta jquery y copia todo el repositorio jquery en tu computador. Ahora tienes una historia completa del proyecto; puedes comprobarlo con gitk -all.

Git push

Entonces digamos que has estado trabajando en un proyecto, gestionándolo con git localmente y ahora quieres compartirlo con un amigo, o con el mundo. Inicia sesión en GitHub y crea un nuevo repositorio. GitHub te dará una URL de clon público (para otros que quieran descargar tu proyecto) y una URL de clon personal (para ti).

Create New Repository

Luego, regresa a tu proyecto en la terminal y dale un giro:

Un control remoto es un repositorio de proyectos en una ubicación remota. En este caso, le estamos dando a este control remoto un nombre de origen y le entregamos nuestra URL de clon privado. (Obviamente, tendrás que sustituir mi dirección de URL por tu cuenta.) Ahora que el proyecto sabe a dónde está yendo...

Git push

Esto empuja la ramificación maestra al origen del remoto. ¡Ahora tu proyecto está disponible para el mundo! Vuelve a la página del proyecto y míralo.

GitHub Project

Git pull

Puedes estar en el otro extremo de un proyecto: eres un contribuyente en lugar del propietario. Cuando el propietario envía un nuevo commit al repositorio, puedes usar git pull para obtener las actualizaciones. Git pull es en realidad una herramienta combinada: ejecuta git fetch (obteniendo los cambios) y git merge (combinándolos con tu copia actual).

¡Y ahí está!

Bueno, hay mucho más que puedes aprender sobre Git. Esperamos que hayas aprendido suficientes comandos para ayudarte a administrar tu próximo proyecto de manera más inteligente. Pero no te detengas aquí, ¡echa un vistazo a estos recursos para convertirte en un maestro de Git!

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.