¿Qué es Git y por qué debería usar el control de versiones si es un desarrollador?
Como desarrolladores web, la mayoría de las veces tendemos a trabajar en sitios de desarrollo local y luego simplemente cargamos todo cuando terminamos. Esto está bien cuando es solo usted y los cambios son pequeños, pero cuando se trata de más de una persona trabajando en algo, o en un proyecto grande con muchos componentes complicados, eso simplemente no es posible. Ahí es cuando nos dirigimos a algo llamado control de versiones..
Hoy hablaré de un software de control de versiones de código abierto llamado Git. Esto permite que más de una persona trabaje de manera segura en el mismo proyecto sin interferir entre sí, pero también es mucho más que eso..
¿Por qué usar el software de control de versiones??
En primer lugar, el nombre debe regalarlo. El software de control de versiones te permite tener “versiones” de un proyecto, que muestra los cambios que se realizaron en el código a lo largo del tiempo y le permite retroceder si es necesario y deshacer esos cambios. Esta capacidad por sí sola, de poder comparar dos versiones o revertir cambios, la hace bastante valiosa cuando se trabaja en proyectos más grandes..
Probablemente incluso lo haya hecho usted mismo en algún momento, guardando copias de un proyecto en diferentes puntos para tener una copia de seguridad. En un sistema de control de versiones, solo se guardarán los cambios, un archivo de parche que podría aplicarse a una versión, para que sea igual a la versión siguiente. Con un desarrollador, esto es suficiente.
¿Pero qué pasa si tienes más de un desarrollador trabajando en un proyecto? Ahí es cuando surge la idea de un servidor de control de versiones centralizado. Estos han sido el estándar durante mucho tiempo, por lo que todas las versiones se almacenan en un servidor central, y los desarrolladores individuales verifican y cargan los cambios en este servidor. Si alguna vez has visto el historial de edición de una página de Wikipedia, tendrás una buena idea de cómo funciona esto en un escenario del mundo real:
Los beneficios de un sistema como este es que varios desarrolladores pueden realizar cambios, y cada cambio puede atribuirse a un desarrollador específico. En el lado negativo, el hecho de que todo se almacene en una base de datos remota significa que no se pueden hacer cambios cuando el servidor se cae; y si la base de datos central se pierde, cada cliente solo tiene la versión actual de todo lo que estaba trabajando en.
Eso nos lleva a Git, y otros llamados sistemas de control de versiones distribuidas. En estos sistemas, los clientes no solo verifican la versión actual de los archivos y trabajan con ellos, sino que reflejan todo el historial de versiones. Cada desarrollador siempre tiene una copia completa de todo. Se sigue utilizando un servidor central, pero en el caso de que ocurra lo peor, todo podrá restaurarse desde cualquiera de los clientes que tengan las últimas versiones..
Git trabaja específicamente tomando “instantáneas” de archivos; Si los archivos permanecen sin cambios en una versión particular, simplemente se vincula con los archivos anteriores, lo que hace que todo sea rápido y sencillo..
También le puede interesar saber que Git se utiliza para administrar y desarrollar el núcleo de Linux, el componente básico sobre el que se construyen todas las distribuciones de Linux..
Que es github?
Aunque puede ejecutar su propio servidor Git localmente, Github es un servidor remoto, una comunidad de desarrolladores y una interfaz web gráfica para administrar su proyecto Git. Es gratis para usar hasta 5 repositorios públicos, es decir, cuando cualquier persona puede ver o compartir su código, con planes de bajo costo para proyectos privados. Le sugiero encarecidamente que se registre para obtener una cuenta gratuita para que pueda comenzar a jugar con sus propios proyectos o forzar los demás..
Bifurcación y bifurcación
Estos son conceptos centrales de la experiencia Git, así que tomemos un momento para explicar la diferencia..
Probablemente has escuchado el trabajo “tenedor” Cuando se trata de distros de linux. Si está familiarizado con la aplicación de centro de medios Plex, sabrá que originalmente era una bifurcación del Xbox Media Center de código abierto similar Aeon Nox 3.5: tema hermoso y personalizable para XBMC Aeon Nox 3.5: tema hermoso y personalizable para el conjunto XBMC sube tu centro de medios exactamente de la manera que lo deseas. Aeon Nox 3.5 es la versión más reciente de lo que quizás sea el mejor tema para XBMC, y es una combinación rara: hermosa ... Leer más. Esto simplemente significa que en algún momento en el pasado, algunos desarrolladores tomaron el código de XBMC y decidieron seguir su propio camino; que se convirtió en Plex.
Por supuesto, esto está totalmente permitido cuando el proyecto es de código abierto: puede tomar el código, hacer lo que quiera con él. Con Git, si cree que sus cambios son lo suficientemente buenos como para revertirlos a la “dominar” proyecto, puedes hacer un “solicitud de extracción” al autor, pidiéndoles que vuelvan a colocar sus cambios en su proyecto original. Esto le permite tener cientos de miles de desarrolladores trabajando en un proyecto en cualquier momento, ninguno de los cuales debe ser necesariamente aprobado para el acceso al código; solo copian el código, realizan cambios y solicitan que se reenvíen al maestro. Por supuesto, depende del propietario del proyecto original si deciden aceptar sus cambios o no.
La ramificación es algo que se realiza internamente en un proyecto por los desarrolladores autorizados. Le permite separar fácilmente problemas o características específicas, y trabajar en ellas sin romper los archivos maestros. Una vez que esté satisfecho de que su sucursal haya resuelto el problema, vuelva a fusionarlo con el maestro. En cualquier punto, puede haber tantas ramas como quieras; no interfieren entre sí. También puede combinar cambios entre ramas sin tocar el maestro..
Aquí hay un gran diagrama de un flujo de trabajo de ejemplo de Vincent Driessen:
La próxima vez, veremos cómo configurar un ejemplo de Git funcional y hacer cambios de código dentro de las sucursales. El control de versiones es un tema enorme. Solo he dado una breve descripción general aquí, pero como desarrollador que está acostumbrado a hacer cambios y deshacerlos si no funcionan, todo el concepto me ha sorprendido, espero que también lo haga el suyo..
¿Eres un desarrollador experimentado con experiencia en Git? ¿Estás empezando y crees que te gustaría tener una oportunidad? Sonar apagado en los comentarios.!
Explore más sobre: Programación, Gestión de Proyectos, Desarrollo Web.