Administre las versiones de sus archivos como un programador con Git

Administre las versiones de sus archivos como un programador con Git / Programación

Si alguna vez ha trabajado con colegas en un documento, conoce este dolor: alguien toma el primer pase (document.doc), luego se lo envía a todos. La siguiente persona hace lo mismo, al igual que la tercera, cada una con una revisión (document_rev3.doc) al nombre del archivo. A la gerente le gusta lo que ve y lo etiqueta como completo (document_final.doc)… Hasta que aparezcan cambios de última hora (document_final_Aaron's changes_reviewed_by_Bob_now_really_final.doc).

Ahora imagine cambios como este en docenas de archivos de código fuente. Los programadores crearon sistemas de control de versiones (VCS) para resolver este problema. Son un poco técnicos por naturaleza, pero también pueden ser útiles para usuarios avanzados. Veamos los aspectos básicos del control de versiones utilizando el sistema superior hoy., Git.

Descripción general del control de versiones en uso

El propósito principal de los VCS es capturar versiones (también llamado revisiones) de un archivo a lo largo del tiempo. Esto significa no depender de métodos crudos como el descrito anteriormente. En estos sistemas, cuando accede “document.doc” estás trabajando en la versión más reciente por defecto. Pero también puede volver al historial del archivo y recuperar versiones anteriores. Los sistemas creados específicamente para administrar versiones de archivos comenzaron en el desarrollo de software, pero se han abierto camino en más “corriente principal” aplicaciones también.

La evolución del control de versiones en el desarrollo de software

Las aplicaciones de control de versiones originalmente surgieron como una forma de evitar que los programadores rompan el código de los demás. Los primeros sistemas simplemente permitieron a los usuarios bloquear archivos de otras ediciones, mientras que los sistemas de segunda generación (como Subversion Cómo controlar las versiones de WordPress usando Subversion [Linux] Cómo controlar las versiones de WordPress usando Subversion [Linux] La mayoría de ustedes probablemente ya saben que WordPress potencia una gran cantidad de sitios web que vemos todos los días. Con la gran base de usuarios y el soporte, puede hacer muchas cosas geniales con ... Leer más) agregue la verificación del proyecto completo desde un repositorio central.

Si bien estos sistemas de segunda generación todavía se usan ampliamente, la industria está migrando hacia sistemas de tercera generación. La principal característica de estos sistemas es que son repartido, Es decir, no hay un repositorio central. Más bien, cada usuario tiene su propia copia completa del repositorio (incluidas todas las revisiones anteriores). Pero cualquier cambio (incluso revisiones completas) es “local” hasta que él “empuja” a otro repositorio. Ese usuario puede luego sacar un clon para hacer cambios y repetir el proceso.

Control de versión actual para no programadores

La capacidad de capturar múltiples versiones de la misma cosa también es una característica común para los usuarios promedio. No solo para los codificadores: sistemas de control de la versión superior para los escritores No solo para los codificadores: sistemas de control de la versión superior para los escritores La mención del control de versión o control de revisión hace Parece algo para los geeks. Se sorprenderá al saber que los sistemas de control de versiones tienen su lugar no solo en la redacción académica sino también en ... Leer más. Con acceso a almacenamiento más barato, tanto en la máquina local como a través de servicios en la nube fáciles de usar, los usuarios ahora tienen la capacidad de rastrear el historial de sus archivos. Los programas de propósito general hacen esto de varias maneras.

Sistemas operativos puede capturar un historial de archivos o carpetas Guía de copia de seguridad de datos de Ultimate Windows 10 Guía de copia de seguridad de datos de Ultimate Windows 10 Hemos resumido todas las opciones de copia de seguridad, restauración, recuperación y reparación que podemos encontrar en Windows 10. Use nuestros consejos simples y nunca se desespere sobre datos perdidos de nuevo! Lee mas . Esto puede suceder automáticamente cada vez que se guarda un archivo, o en un horario regular. Algunos aplicaciones de escritorio También le permite capturar versiones o instantáneas de archivos. Por ejemplo, LibreOffice proporciona la “Guardar versión” función (como se muestra en la imagen superior a continuación) que le permite guardar varias versiones del documento en un archivo. Por último, las aplicaciones web / en la nube como Google Drive, ownCloud, etc. también mantendrán las iteraciones anteriores de un archivo o documento (como se muestra para Google Docs en la imagen inferior a continuación), ya sea entre bambalinas o por orden expresa..

¿Por qué usar Programming-Centric Version Control luego??

Dado que todas estas opciones ya existen en el sistema operativo o en el nivel de la aplicación, ¿por qué molestarse con estas herramientas de programador nerd? Hay un par de inconvenientes en los métodos anteriores, incluyendo:

  • Algunos sistemas operativos guardarán todos y cada uno de los ajustes que realices en un archivo en una nueva versión. Tiempo de retroceso: 4 herramientas y consejos para restaurar archivos borrados en Windows Tiempo de retroceso: 4 herramientas y consejos para restaurar archivos borrados en Windows Uno de Windows las mayores fallas podrían ser su rescate, si alguna vez borra accidentalmente un archivo importante: el sistema de archivos de Windows no elimina realmente los archivos. Hasta que se sobrescriban, los archivos eliminados se pueden restaurar. Lee mas . Esto no solo consumirá almacenamiento innecesario, sino que también dificultará la identificación de un punto de restauración particular para un archivo.
  • Estas soluciones también pueden usar un archivo como la unidad básica para administrar. Pero los sistemas de control de versiones normalmente funcionan en el nivel de directorio (incluidos los subdirectorios). Un VCS hace que sea fácil ver con precisión qué archivo cambió y cuándo.
  • Estas mismas soluciones tampoco le brindan la capacidad de etiquetar las iteraciones en la mayoría de los casos. Esto también hace que sea difícil encontrar el archivo con el pasaje de texto que sobrescribiste en algún momento antes de que te dieras cuenta de lo brillante que era..
  • Las versiones de sistemas operativos y aplicaciones como Word también presentan puntos únicos de falla. Para Word es el archivo en sí mismo (si se corrompe, dile adiós a todas tus copias anteriores también). Para el sistema operativo, es el disco duro. Cómo diagnosticar y reparar un disco duro muerto para recuperar datos. Cómo diagnosticar y reparar un disco duro muerto para recuperar datos. Hace varios años, experimenté una falla en el disco duro. Estaba en el trabajo cuando mi computadora portátil de repente comenzó a actuar particularmente extraño. Aproximadamente media hora después, el disco duro falló audiblemente y la computadora portátil ... Lea más, a menos que sea un usuario responsable y realice copias de seguridad con regularidad La Guía de restauración y restauración de Windows La Guía de restauración y restauración de Windows Los desastres ocurren. A menos que esté dispuesto a perder sus datos, necesita una buena rutina de respaldo de Windows. Le mostraremos cómo preparar copias de seguridad y restaurarlas. Lee mas .
  • La naturaleza de los servicios basados ​​en web significa que sus revisiones anteriores pueden estar en la nube. Por ejemplo, si intenta ver el historial de un archivo de Dropbox en Linux (como se muestra en la imagen a continuación), será redirigido al sitio web.

Si alguno o todos estos problemas hacen que desee algo más, consulte la siguiente sección en la que los resolvemos con Git.

Control de versiones con Git

En las siguientes secciones veremos cada uno de estos pasos para un proyecto muy importante: este artículo. Lo haremos usando la versión de línea de comandos de Git. Conocer los comandos de la terminal facilitará la tarea de encontrar sus equivalentes de GUI y garantizará que pueda usarlos en todas las plataformas.

1. Configuración del repositorio Git

Si su máquina no tiene instalado git (las Mac sí lo tienen, al igual que algunas distribuciones de Linux), puede tomar el instalador de Windows de la página de descarga del proyecto o instalarlo en Linux con un comando (específico para su distribución) como:

sudo apt instalar git

Lo siguiente que tenemos que hacer es configurar un git repositorio, que es solo una carpeta que contiene tu proyecto. Para aprovechar las versiones de Git, necesita inicializar La carpeta como repositorio. Puede hacer esto en una línea de comando con el siguiente comando:

git init

Es posible que no vea nada una vez que esto se complete, pero habilite la “mostrar archivos ocultos” Opción en su administrador de archivos, y verá que hay una nueva .git carpeta (como se muestra en la imagen de arriba). Aquí es donde Git guarda toda su información para que esté fuera de tu camino..

2. Agrega y confirma tu primer archivo

El siguiente paso es crear contenido (archivos) en su proyecto. Estos pueden ser cualquier tipo de archivo, ya que la mayoría de los proyectos de programación se componen de código (texto) y activos como gráficos (binarios). Todo lo que necesita saber sobre los formatos de archivo y sus propiedades Todo lo que necesita saber sobre los formatos de archivo y sus propiedades use indistintamente el archivo de Word: música, imagen, hoja de cálculo, presentación de diapositivas, etc. ¿Pero qué hace que un archivo sea un "archivo"? Intentemos y entendamos esta parte fundamental de la computación. Lee mas . Una vez creado, haga lo siguiente en la línea de comandos mientras aún se encuentra en el directorio de su proyecto:

estado de git

El primer paso para un commit es “escenario” Los elementos nuevos o actualizados. Vea cómo la salida anterior le permite saber que hay “sin etapas” cambios? Puede organizar todo en su directorio (recursivamente, es decir, para incluir subcarpetas y sus archivos) con este comando:

git -a .

los “-una” bandera es para “añadir,” y el periodo se refiere al directorio actual. Es básicamente diciendo “Agrega todos los archivos a mi cometer.” Ahora para hacer realmente la confirmación, escriba lo siguiente:

git commit -m "WHOOP, mi primer commit!"

Ahora, cuando verifique el estado nuevamente, no debería haber cambios de espera. Para ver el commit en sí mismo, verifique el registro de git, usando modo gráfico, con listado cortado a una línea, y decorado para la legibilidad:

registro de git --todos --decorar --oneline --graph

Esto le mostrará una buena línea de tiempo de su compromiso, con el más reciente en la parte superior.

3. Crea una rama para experimentar

Mientras trabajas, es posible que desees ir en una dirección particular, sin saber si va a funcionar. Para esto querrás crear una rama con el siguiente comando:

git branch experiment1 git checkout experiment1

El segundo comando te cambia a la “Experimento 1” rama. Puede volver a cambiarlo reemplazándolo con “dominar.” Cuando comience a trabajar en su texto, note la diferencia entre los mismo archivo de cada rama. Primero el “Experimento 1” ramifica con tu nuevo texto:

Compara esto con el original:

Ahora, después de trabajar por un tiempo (terminando con un nuevo compromiso), lo mejor que puedes encontrar es “Lorem ipsum dolor sit amet ... ?” ¿Que es eso? Es una tontería, y debe ser eliminado de su proyecto inmediatamente. Puedes destrozar tu rama con el siguiente comando (“-re” for force delete):

rama de git -D experimento1

Ahora comienza otra rama y agrega algo inteligente, junto con algunas imágenes:

git branch experiment2 git checkout experiment2 git add. git commit -m "Más texto, imágenes agregadas"

4. Combina tus cambios

Finalmente, una vez que esté satisfecho con los cambios en su rama actual, el siguiente comando los fusionará con el “dominar” rama. Siempre y cuando no haya estado haciendo muchos saltos entre los dos, esto resultará en la aplicación de todos sus nuevos cambios y se creará una nueva revisión. Lo siguiente en la línea de comando los combinará por ti:

git merge experiment2

Ahora tendrás una revisión que combina lo último en “dominar” con lo último en “experimento2.” En este punto, puede deshacerse del experimento (fue exitoso después de todo) con lo siguiente:

rama de git -d experimento2

Tenga en cuenta que solo perderá cualquiera de los cambios incrementales que haya realizado dentro de esa rama si lo hace..

5. Empuje a un lugar seguro

Por último, Git es un repartido sistema, lo que significa que puede tener varias copias de su repositorio y sincronizarlas. Por ejemplo, cree un nuevo repositorio en un servidor en el que pueda SSH en Cómo administrar de forma remota un servidor Linux con SSH Cómo administrar de forma remota un servidor Linux con SSH SSH es muy funcional, por lo que es una opción para la administración remota de servidores. Aprenda cómo administrar de forma remota un servidor Linux a través de SSH, desde la conexión hasta la instalación del software y las transferencias de archivos. Leer más con este comando:

git init --bare

los “-desnudo” flag lo configura como una especie de repositorio de solo lectura, en el que no puede modificar los archivos directamente. Luego puede configurarlo como una copia remota de su repositorio local con lo siguiente (el primer comando garantiza que las nuevas sucursales locales se creen de forma remota):

git config push.default emparejamiento git remoto agregar central ssh: // [nombre de usuario] @ [URL] / ruta / a / repositorio git push --set-upstream central central

Configuración para la versión y copia de seguridad con Git

Con la configuración anterior, puede seguir un proceso simple para mantener todo el trabajo que hace en un proyecto no solo con versiones, sino también con copias de seguridad.

  1. Realizar cambios en los archivos del proyecto..
  2. Problema “git añadir .” para agregar todos los cambios a un commit.
  3. Problema “git commit -m [algún mensaje]” cometer los cambios a tu local repositorio. Repetir desde el principio.
  4. Problema “git push” para confirmar los cambios en un repositorio remoto a intervalos regulares.
  5. Problema “git clone ssh: // [nombre de usuario] @ [URL] / ruta / a / repositorio” de alguna otra máquina para

¿Los beneficios de los sistemas de control de versiones son algo que te interesa? ¿O las aplicaciones de respaldo que no son de desarrollo son suficientes para sus necesidades? Háganos saber sus pensamientos en los comentarios a continuación.!

Explorar más sobre: ​​Administración de archivos.