Cómo usar las sucursales de Git para estructurar su proyecto de programación
Las películas y la televisión representan la programación como una actividad frenética Hollywood Hacks: el mejor y el peor hacking de las películas Hollywood Hacks: el mejor y el peor hacking de la película Hollywood y la piratería no se llevan bien. Si bien la piratería en la vida real es difícil, la piratería de películas a menudo implica simplemente tocar el teclado como si sus dedos se estuvieran pasando de moda. Lee mas . El temporizador de una bomba cuenta atrás, y el compañero nerd que era una carga hasta ese momento trabaja febrilmente en una computadora portátil. El código vuela por la pantalla hasta que ella toca la tecla de retorno final con una respuesta satisfactoria. charla! El temporizador se detiene y todo vuelve a ser correcto en el mundo. Pero la programación no es nada de eso. Incluye documentos de diseño, maquetas de UI y revisiones de códigos. Y más que nada, implica prueba y error, especialmente si eres un principiante (como yo).
Ahora, ya puede estar convencido del valor de mantener sus proyectos de codificación en control de fuente. ¿Qué es Git y por qué debería usar el control de versiones? Si es un desarrollador. ¿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 solo eres tú y los cambios son pequeños, ... Leer más. El hecho de cometer todo este ensayo y error en su repositorio resultará en un proyecto grande y desordenado, con muchas revisiones. La mayoría de las confirmaciones que realice contendrán cosas que están rotas, ¿por qué guardarlo? El git rama La función puede ayudar a mantener todo este código desordenado lejos de lo que sabes que funciona.
En este artículo veremos lo que significa la ramificación de su código, cómo hacerlo y las formas de administrar las actualizaciones de “principal” rama.
Creación de una rama Git
Hemos aprendido de nuestra introducción al control de código fuente. Administre su control de versiones como un programador con Git Administre su control de archivos como un programador con Git Los programadores crearon sistemas de control de versiones (VCS) para resolver los problemas de control de versiones de archivos. Veamos los conceptos básicos del control de versiones utilizando el sistema superior de hoy, Git. Lea más que puede crear un nuevo repositorio con el siguiente comando en un terminal:
git init
Cuando haces esto, crea un directorio oculto en tu ruta actual, llamado “.git.” Si no puede verlo, consulte algunos de nuestros artículos anteriores sobre la visualización de La forma sencilla de mostrar los archivos y carpetas ocultos en Windows 10, 8.1 y 7 La forma fácil de mostrar las carpetas y archivos ocultos en Windows 10, 8.1 y 7 ¿Necesitas ver archivos y carpetas ocultos en Windows? Aquí te mostramos cómo mostrarlos en Windows 10, 8.1 y 7 para que no te oculten nada. Leer más archivos Ocultar y buscar cualquier archivo en Mac OS X Ocultar y buscar cualquier archivo en Mac OS X No existe una forma sencilla de ocultar o revelar rápidamente archivos ocultos en Mac OS X como lo hay en Windows, pero es posible. Lee mas . Este directorio contiene toda la información necesaria para mantener el historial de revisión de sus archivos. Una vez que configura su administrador de archivos para que muestre los archivos ocultos, puede abrir la carpeta .git y ver varios subdirectorios. Uno de estos se llama “refs” (mostrado en la imagen de abajo), y su “cabezas” El subdirectorio contiene listados para todas las sucursales en su proyecto. Al principio solo tendrás uno, doblado “dominar.”
El directorio refs mantiene un registro de la rama, pero no la rama en sí. Al menos, no la rama que eres. actualmente usando. Esos archivos se guardan en el directorio de trabajo (“~ / Temp / post-programación-git-branch” en el ejemplo anterior) para que pueda acceder a ellos de una manera normal. Haciendo exactamente eso, creamos nuestro primer archivo (llamado “primer archivo.txt”) en el directorio de trabajo, es decir. fuera de El directorio .git. Verifique esto usando los comandos confiables de la introducción anterior al artículo de git Administre su control de versiones como un programador con Git Administre su control de versiones como un programador con Git Los programadores crearon sistemas de control de versiones (VCS) para resolver problemas de control de versiones de archivos. Veamos los conceptos básicos del control de versiones utilizando el sistema superior de hoy, Git. Lee mas :
Ahora podemos ver que el directorio de trabajo tiene dos archivos, uno que confirmamos y uno creado automáticamente por git (contiene el mensaje de confirmación que acabamos de ingresar).
Ahora, vamos a crear una nueva rama llamada git “pruebas”:
pruebas de rama git
Revisando la sucursal y trabajando en ella
Podemos emitir el comando anterior sin ningún nombre para obtener una lista de todas las sucursales, así como cuál estamos usando actualmente (es decir, cuál es “controlado”):
Ahora, si examinamos la estructura del directorio, veremos “.git / refs / heads” Ahora tiene dos archivos, uno para cada “dominar” y “pruebas.”
Cada uno de estos es una lista de los compromisos que componen la rama. Por ejemplo, si examinamos el “dominar” rama con el “registro de git” comando, podemos ver una línea para cada una de las confirmaciones hechas a esa rama.
El proceso de “el registro de salida” una rama significa que los cambios que realice en los archivos formarán parte de esa rama, pero no de otras. Por ejemplo, supongamos que verificamos la rama git de prueba con el siguiente comando:
git checkout testing
Luego, agregamos una línea de texto a first-file.txt, por supuesto, lo confirmamos después. Si vuelve a la rama maestra, encontrará que el archivo todavía está en blanco (el gato comando muestra el contenido de un archivo en el terminal):
Pero volviendo a la “pruebas” rama, el archivo todavía tiene el texto añadido:
Pero todo lo que vemos en el directorio es el único archivo. “primer archivo.txt.” ¿Dónde están entonces estas dos versiones alternativas del mismo archivo? El directorio .git cuenta para estos cambios, pero no de la forma que podría esperar.
Cómo Git almacena cosas
Si tuviera que examinar un repositorio para otros sistemas de control de versiones como Subversion, encontrará que mantienen una copia por revisión para cada archivo individual. Esto significa que si tiene un repositorio de un archivo, luego cree dos ramas, el repositorio contiene dos copias diferentes de ese archivo. De hecho, realmente usas “svn copia” como el comando para crear una rama en Subversion! Por otro lado, git opera sobre el concepto de “cambios.”
El resultado de lo anterior nos dice todo el contenido de “el maletero” (La versión de SVN de “dominar”) ha sido copiado. Una mirada en un administrador de archivos confirma esto:
los “.git / objetos” directorio es lo que contiene todos estos pequeños cambios, y cada uno es rastreado con una identificación. Por ejemplo, en la imagen de abajo, verá archivos con nombres largos de estilo ID. Cada uno vive en una carpeta nombrada con dos caracteres hexadecimales (8c y 8d abajo).
Juntos, estos nombres de carpetas y archivos forman la ID de un cambio en particular (en realidad, un hash SHA1). Puedes explorar sus contenidos utilizando el git cat-file mando. Basados en sus fechas modificadas, podemos ver el comienzo. “8d” vino primero, y no muestra nada. Mientras que el que empieza “8c” Contiene la línea de texto que agregamos al archivo en el “pruebas” rama.
La conclusión es que las ramas de git (incluido el valor predeterminado “dominar”) no están separados “carpetas” Contiene copias de archivos. Más bien, son listas de cambios realizados en archivos a lo largo del tiempo. Esto es más eficiente en cuanto al almacenamiento, pero el resultado es el mismo. Todo lo que haces (¿rompes?) En una rama de git permanece allí hasta que lo combinas.
Estrategias para fusionarse de nuevo a la rama principal (¿Eliminar o no eliminar?)
Supongamos que tenía un proyecto existente con varios archivos, que luego se ramificó en “pruebas,” e hice un poco de trabajo en ello. Ahora quieres volver a introducir esos cambios en la “dominar” rama. Puedes hacer con lo siguiente desde el “dominar” rama:
git merge testing
Siempre que no haya conflictos, el cambio consistente en el nuevo texto será aplicado a “dominar.” El resultado es “primer archivo.txt” Será idéntico en ambas ramas. Sin embargo, nunca hubo realmente alternativa versiones del archivo.
Ahora viene la pregunta, ¿qué hacer con la rama? Hay dos estrategias comunes para tratar con las ramas.
- Una es mantener una rama git como “pruebas” para jugar en (mostrado arriba). Intenta algunas cosas y, si puede hacer que funcionen, fusione los cambios de nuevo en “dominar.” Entonces puedes terminar el trabajo en esa rama, o incluso deshacerte de él por completo. Esto significa que tu “dominar” es la versión más estable del código, porque solo debe contener cosas que sabes que funcionan. También puede pensar en este enfoque como el uso de “ramas características.” Esto se debe a que su propósito es refinar una (o varias) adiciones específicas al código.
- Un enfoque diferente es hacer todo su trabajo principal en el “dominar” Rama, haciendo compromisos en el camino. Una vez que estés satisfecho con la funcionalidad, creas una rama dentro de la cual harás correcciones de errores y similares. Esto resulta en más de un “rama de liberación” (mostrado abajo), ya que terminan con el lanzamiento. También significa tu “dominar” rama es típicamente la versión más inestable de tu código.
Utilice el método que sea mejor para usted
El primer enfoque aquí es más común cuando se trabaja con git. Sus otras características (específicamente las etiquetas) facilitan el marcado de una instantánea particular del código como “estable.” También se presta mejor para proyectos más grandes y colaborativos. Pero cuando trabaje en sus propios proyectos personales, siéntase libre de usar cualquiera de estos que tenga más sentido para usted. Lo mejor de usar git es que capturas todos tus cambios, por lo que siempre puedes regresar y encontrar algo. Y organizar su proyecto con sucursales de git lo hace un poco más fácil de hacer.
¿Cómo te acercas a las ramas en tus proyectos? ¿Los usas para experimentar, luego los trates después? ¿O representan una historia detallada de su trabajo en el proyecto??
Háganos saber a continuación en los comentarios si tiene alguna forma inteligente de tratar con sucursales en sus proyectos de git!