Probablemente estés familiarizado con herramientas, como Git y Subversion. Pero, como diseñadores web, es bastante posible que, aunque podría decir que aprovecha el control de versiones en sus proyectos, la verdad es que, la mayoría de las veces, simplemente no lo hace..
Si encajas en esta descripción, no te preocupes; no estas solo. De hecho, es la opinión de este autor, que no ha sido investigada, que la gran mayoría de los diseñadores web no lo hacen. El dilema es que hay una creencia común de que el control de versiones es estrictamente para los programadores hardcore, que pasan sus días en la oscuridad y que rara vez salen a tomar aire, excepto cuando el microondas se apaga, lo que indica que el bolsillo caliente está listo para ser consumido.
En realidad, si usted codifica para la web, ya sea en el front-end o back-end, es su deber codificar de manera responsable: use el control de versiones.
Comando + Z
durante un doloroso número de segundos, mientras mira al editor revertir sus cambios.Admítelo: cada desarrollador se ha identificado con uno de los signos señalados anteriormente en un momento u otro en su carrera. Pero recuerde: el primer paso para la recuperación es admitir que tiene un problema!
Git es el sistema de control de versiones más popular disponible..
Entonces, ¿cómo Git factor en esta cosa de control de versión completa? Bueno, la definición súper nerd es que Git es un sistema de control de versiones distribuido, desarrollado por Linus Torvalds, donde cada directorio de trabajo es su propio repositorio con el historial completo disponible en cualquier momento. Además, Git ofrece la posibilidad de compartir código y crear múltiples sucursales (o líneas de tiempo) para sus proyectos, lo que lo hace especialmente adecuado para equipos de desarrollo ágil..
Una definición más comprensible podría ser: Git es una herramienta de línea de comandos que usted, y cualquier otro desarrollador de su equipo, utiliza para guardar instantáneas frecuentes de sus proyectos. En cualquier punto dado, ofrece la flexibilidad de revertir los cambios a estados anteriores, con un solo comando.
El libro de Scott Chacon, 'Pro Git', está disponible en su totalidad. en el sitio web de Git.
Ciertamente, el primer paso hacia la recuperación sin errores, la "Codificación del vaquero" es descargar Git desde git-scm.com. Utilice cualquiera de las siguientes URL, según el sistema operativo que elija.
A continuación, debemos configurar la instalación con solo un toque, asociando un nombre de usuario y una dirección de correo electrónico. Abra su consola más cercana (Terminal en la Mac) y ejecute:
$ git config --global user.name "Tu nombre" $ git config --global user.email [email protected]
No te preocupes esto solo debe escribirse una vez, después de instalar Git por primera vez. Ahora, para cada acción que realice, Git usará estos ajustes.
Hay otras opciones de configuración, como especificar qué editor de código se debe usar, cuando Git requiere que escribas un mensaje de confirmación, pero lo ignoras por ahora..
Enhorabuena, Git se ha instalado con éxito.!
Al igual que con cualquier nueva tecnología, se requiere un poco de aprendizaje..
Uno de los aspectos más difíciles de aprender Git es descifrar a qué se refiere la jerga. Se compromete? ¿Puesta en escena? ¿Ramas? Troncos? Eh?
Al igual que con cualquier nueva tecnología, se requiere un poco de aprendizaje. Por suerte, tan complejo como puede ser Git, particularmente como diseñador web, encontrará que un puñado de comandos recorrerá un largo camino. A modo de comparación, considere el diccionario de inglés y luego la cantidad de palabras que utilizamos de manera realista en las conversaciones de todos los días. Lo mismo es cierto para Git, en un nivel mucho más bajo. Así que no te sientas abrumado. Tómalo un comando a la vez..
Para eliminar esta terminología confusa, es mejor pensar primero en términos de algo tangible en el mundo real: un camión de reparto..
Imagina que has comenzado un nuevo sitio web estático. Ha creado carpetas para archivos JavaScript y CSS, así como un archivo index.html con un poco de HTML de plantilla. De hecho, haz eso mismo ahora mismo! Cuando haya terminado, es hora de crear el primer commit.
Regrese a la Terminal, y escriba:
git init
Este comando, "inicializar Git", informa a Git que deseamos el control de versiones para este proyecto. O bien, "iniciar el encendido". Solo necesita ejecutarse una vez, al comienzo del ciclo de vida de un nuevo proyecto..
A continuación, vamos a determinar cuál es el "estado".
estado de git
Si trabajas a lo largo, es probable que veas algo como:
# En la rama maestra # # Inicial de confirmación # # Archivos sin seguimiento: # (use "git add... "para incluir en lo que se confirmará) # # index.html no se agrega nada para confirmar, pero hay archivos sin seguimiento presentes (use" git add "para rastrear)
Aunque algo confuso, si nos tomamos un momento, veremos que, de forma predeterminada, estamos trabajando en una "rama", llamada "maestro". A continuación, tenemos un archivo sin seguimiento: index.html. A partir de esto, podemos descifrar que Git no es mágico; Se debe decir qué archivos hay que vigilar, por así decirlo..
¿Es curioso por qué los directorios de JavaScript y CSS no están incluidos en la lista de archivos sin seguimiento? Git rastrea archivos, no carpetas. Sin embargo, una técnica común para incluir directorios vacíos en una confirmación es agregar un archivo .gitignore a cada subdirectorio. Más sobre eso más tarde!
Para rastrear archivos, primero debemos agregarlos al área de preparación o, ponerlos en el camión.
git add index.html
Ahora, si volvemos a comprobar el estado, veremos:
On branch master # # Initial commit # # Cambios a ser comprometidos: # (use "git rm --cached... "para quitar el escenario) # # nuevo archivo: index.html
Excelente; Git está mirando este archivo para los cambios. En este caso, solo hemos añadido un único archivo. Si, en cambio, preferiríamos agregar todos los archivos al área de preparación, podemos usar el símbolo de período.
git añadir .
Tenga en cuenta que el camión aún no se ha ido; Simplemente hemos cargado un par de cajas (o archivos) en la parte posterior. Para realizar la instantánea y guardar una copia del proyecto en su estado de seguimiento actual, se debe realizar una confirmación.
git commit -m 'First commit'
Anteriormente, creamos un nuevo compromiso y proporcionamos un mensaje de "Primer compromiso". Con eso, nuestro primer compromiso se ha completado, y el camión se ha ido a la fábrica, con una copia del proyecto en la parte posterior..
Para verificar su trabajo, use un nuevo comando: "registro".
git log commit 02c934fcaf3de7677273b74d8ad3ed5041066986 Autor: Jeffrey WayFecha: miércoles 19 de diciembre 15:07:23 2012 -0500 Primer compromiso
Perfecto, de hecho, se ha creado un nuevo compromiso, y también parece que el compromiso tiene un ID de referencia único. Archiva eso por ahora.
Si, de nuevo, comprueba el estado..
estado de git
Debido a que no se han realizado cambios desde la última confirmación, Git nos dice lo siguiente:
# En el bifurcador no hay nada que cometer (limpieza del directorio de trabajo)
¡Éxito! 90% de tu uso de Git seguirá este ciclo.
Enjuague y repita!
Vayamos al siguiente paso. Como un ejemplo sencillo, tal vez queremos incluir una hoja de estilo de reinicio simple en nuestro proyecto. Vamos a escribir el más básico (quizás mal aconsejado) de reinicios..
/ * css / reset.css * / * margen: 0; relleno: 0;
Ahora, vuelva a index.html e incluya una referencia a este archivo:
Como regla general, si puede describir a la persona sentada a su lado el cambio que acaba de hacer en un proyecto, entonces es probable que merezca un compromiso. Comprometerse a menudo. Hagamos eso ahora; de vuelta a la terminal!
git añadir. git commit -m 'Agregar e incluir la hoja de estilo de reinicio'.
Cuando se escriben mensajes de confirmación, generalmente se considera una buena práctica escribir en tiempo presente. Por lo tanto, "agregar archivo" en lugar de "archivo agregado".
Adelantémonos al mañana, y ahora su jefe le dice que no quiere usar su simple archivo de reinicio. En su lugar, preferirían usar la popular hoja de estilo Normalizar, por Nicolas Gallagher.
No hay problema; Con Git, esta es una solución fácil. Vamos a revertir el commit anterior, y hacer las modificaciones necesarias..
git revertir HEAD
Con Git, la regla es "nunca reescribir el historial".
Este comando revertirá todos los cambios que realizó en la confirmación más reciente. Esencialmente, es un compromiso que hace exactamente lo contrario de lo que hizo el anterior. ¿Por qué revertir, en lugar de deshacer el commit por completo? Una vez más, porque estamos siguiendo las mejores prácticas. Con Git, la regla es "nunca reescribir el historial". Revertir los cambios, pero nunca borrar y deshacerlos.
Al presionar Enter, serás llevado a una nueva pantalla con el texto., "Revertir" Agregar e incluir la hoja de estilo de reinicio ". En este punto, estás en modo Vi (aunque eres libre de configurar Git para usar cualquier editor de código que desees). Por ahora, ve con los valores predeterminados, guarda y sale. Para lograr esto, escribe: wq (Escribir y Salir).
Y con ese único comando, los cambios han sido revertidos. Sigue adelante y verifica para estar seguro. El archivo style.css se ha eliminado y ya no hay una referencia a la hoja de estilos en index.html. ¡Este es el poder de Git! Debido a que adoptamos un estilo de desarrollo de cometer con frecuencia, cuando se colocan en situaciones, donde las ediciones deben revertirse, solo se necesita un comando. No mas presionando Comando-Z
por la enternidad!
Siguiendo la solicitud del jefe, actualicemos el proyecto para utilizar Normalize.css, que hemos descargado y colocado en css / normalize.css.
Dentro de index.html, refiérase a:
Y, por último, cometemos los cambios..
git añadir. git commit -m "Incluir Normalizar en proyecto"
Aunque este fue ciertamente un ejemplo simple, imagine cuán útil puede ser esta técnica para cambios más grandes, que abarcan múltiples archivos dentro de su aplicación. Al agrupar todos los cambios relacionados en un solo compromiso, logramos la máxima flexibilidad y seguridad.
¿Alguna vez ha estado en un punto de un proyecto, cuando desea experimentar con una idea que puede o no convertirse en la aplicación finalizada? Si bien es cierto que siempre se puede revertir el compromiso si las cosas no van de acuerdo con el plan, es una idea más inteligente, por una variedad de razones, para aprovechar la ramificación..
La mejor manera de ilustrar el concepto de las sucursales de Git es hacer referencia a Back to the Future 2.
En ese sentido, si eres un desarrollador nerd y no has visto la trilogía de Regreso al futuro, detén lo que estás haciendo y míralos!
Continuando, recuerde la parte en Regreso al futuro 2, después de que Marty y Doc regresen a 1985 del futuro, pero ¿encuentran que todo es diferente? Al reunirse en el laboratorio de Doc, ahora destruido, Doc dibuja un diagrama que describe cómo, en algún momento, "la línea de tiempo se inclinó en esta tangente, creando un 1985 alternativo". Esto es como la ramificación!
Considere nuestro proyecto de demostración actual; En este momento, hay una línea de tiempo: una línea recta. Tan pronto como creamos una rama para trabajar en nuestra idea, nos separamos de esta línea de tiempo y creamos otra. En este punto, ambas líneas de tiempo existen y pueden contener sus propias confirmaciones respectivas, sin interferir entre sí.
¿Cómo es esto útil? Considere un ciclo de desarrollo ágil, uno en el que usted o su equipo implementan actualizaciones varias veces por semana. Si mantiene el enfoque de "línea de tiempo única", la implementación, por ejemplo, de un simple error tipográfico, no sería posible hasta que terminara de trabajar en su idea también. Sin embargo, con la bifurcación, tenemos la flexibilidad de demorar todo lo que necesitemos en nuestra idea, al tiempo que liberamos la bifurcación maestra (la predeterminada y la principal) para implementar la corrección tipográfica.
Para crear una nueva rama, ejecute:
idea de $ git rama $ idea de pago git
Alternativamente, combina estos dos comandos en uno.
git checkout -b idea
Esto se traduce en: cree una nueva rama, llamada "idea" (sustitúyala para que sea más descriptiva de lo que está trabajando, por supuesto) y cámbiela..
A partir de este momento, no se hará referencia a ninguna modificación y confirmación que realice en la rama maestra. Adelante, inténtalo. Edite index.html y haga un pequeño cambio:
Mi idea
Entonces, compromete tu trabajo..
git add index.html git commit -m 'Primer borrador de mi idea'
Ahora hemos hecho nuestro primer compromiso en esta nueva línea de tiempo. Nuestra idea ficticia aún necesita trabajo, ¡pero estamos en camino! Pero, ahora, un cliente acaba de informar un error tipográfico que debemos corregir lo antes posible. Debido a que estamos utilizando correctamente las ramas, podemos volver a la rama maestra, corregir el error tipográfico e implementarlo.
git checkout master # corregir error git agregar index.html git commit -m 'Reparar pequeño error tipográfico' git push
Una vez que nuestra función de idea está terminada, es hora de fusionarla de nuevo en la rama maestra.
idea git checkout master git merge
Si todo va según lo planeado, su rama de función se fusionará con éxito en la rama maestra, resolviendo la segunda línea de tiempo alternativa de 1985!
Dicho esto, indudablemente se encontrará con situaciones en las que Git aparentemente coloca sus pies en el suelo y se niega a continuar según lo solicitado. ¡En estos casos, Git no está siendo un imbécil por ninguna razón! Lo más probable es que el problema se relacione con algún conflicto que primero debe resolverse, antes de que Git pueda continuar. Imagine intentar fusionar un archivo de nuevo en la rama maestra; El único problema es que, desde que se creó la rama, el archivo se ha editado tanto en la rama de características como en el maestro. En situaciones como esta, ¿cómo podría Git saber qué versión del archivo debería tener prioridad cuando se fusionan las dos? No lo hace, y esto es lo que llamamos un conflicto..
Fusión automática index.html CONFLICT (contenido): Fusionar conflicto en index.html Fusión automática fallida; Arreglar conflictos y luego cometer el resultado..
Antes de que Git pueda continuar, debe resolver el conflicto, editando index.html.
Probablemente llegará un momento, cuando determine que es mejor no rastrear ciertos tipos de archivos con Git. Los ejemplos pueden incluir el .DS_STORE común (con el que los usuarios de Mac estarán familiarizados), los directorios de compilación y los activos compilados temporales.
Fácilmente, Git, a través de un archivo .gitignore, nos permite ignorar ciertos tipos de archivos. Para hacer uso de esto, cree un nuevo archivo .gitignore en la raíz (pero no limitado a) de su proyecto. Dentro de él, proporcione una lista de archivos o tipos de archivos para ignorar. Aquí hay un ejemplo básico:
.DS_STORE build / * .log * .sql * .exe
GitHub hace posible la codificación social.
Hasta ahora, has aprendido a cometer tu código localmente. Pero, ¿cómo se pueden compartir estas modificaciones con su equipo o con el resto del mundo? Entra en GitHub.
GitHub te permite compartir tu código con el mundo. Es la comunidad de código abierto más grande que existe..
Una vez que se registre para obtener una nueva cuenta en github.com, deberá seguir algunos pasos para generar una clave especial, a fin de asociar su computadora con su cuenta de GitHub. No te preocupes Si sigues los pasos, no deberías tener ningún problema..
En este punto, podemos crear un nuevo repositorio e impulsar nuestro pequeño proyecto para compartirlo con el mundo. Una vez que haya iniciado sesión, haga clic en el botón "Nuevo repositorio", asigne un nombre a su repositorio y haga clic en "Crear repositorio". A continuación, se le presentarán algunos comandos que se pueden pegar en la Terminal. Como ya tenemos un repositorio, necesitamos la segunda opción:
git remote add origin https://github.com/USERNAME/project.git git push -u origin master
Esto le indica a Git que agregue nuestro nuevo repositorio remoto, y lo alias como "origen". A continuación, empujamos la rama maestra (no la idea uno) al remoto con el alias de "origen".
¡Eso es! Regrese al navegador, actualice la página y encontrará su nuevo repositorio nuevo, esperando a ser compartido con el resto del mundo..
Cuando otros miembros de su equipo deseen introducir los cambios que ha realizado, solo deben ejecutar:
git pull
¡Este comando incluirá las últimas actualizaciones que se enviaron a GitHub! Además de compartir código, GitHub también ofrece la capacidad de rastrear y contribuir a proyectos populares de código abierto, así como un rastreador de problemas para errores y solicitudes de características. Es la codificación social en su mejor momento!
Aunque solo hemos arañado la superficie de lo que Git es capaz de hacer, la verdad es que, nuevamente, para el 80% de su uso de Git, las técnicas a las que se hace referencia en este artículo serán suficientes. Cree una rama de características, escriba algo de código, agréguelo al área de preparación y confírmelo con un mensaje. Cuando esté listo, vuelva a combinarlo en la rama maestra y despliegue! A continuación, enjuague y repita!
No lo olvides: cuando estés perplejo, StackOverflow es tu mejor amigo. Cualquiera que sea el problema, otros han estado en la misma situación. Busca allí primero.
TryGit ofrece una experiencia interactiva para aprender Git..