Control de versiones de archivos individuales usando GitHub Gist

imagen

A menudo sucede que un desarrollador con el tiempo acumula alguna colección de código que usa en sus proyectos.

Utiliza algunos guiones en algunos proyectos, otros en otros.

Estas secuencias de comandos se mejoran con el tiempo, se eliminan los errores y se optimizan. Por lo tanto, surge la pregunta de cómo sincronizar nuevas versiones de scripts con las de los proyectos .

Hay varias opciones:

La primera opcion:

Crea un repositorio y coloca todos los scripts allí. Entonces este repositorio se conecta como un submódulo al proyecto y se usa.

Contras:

  1. Todos los scripts, incluidos los innecesarios, se copian en el proyecto.
  2. el submódulo no está comprometido con el repositorio del proyecto, por lo que si el repositorio remoto del submódulo no está disponible, no podremos descargar todo el proyecto.

La segunda opción:

Cada script debe almacenarse por separado en Github gist y conectarse según sea necesario como submódulos
El signo negativo es el mismo que en la primera versión del segundo párrafo.

La tercera opción:

Usa Git Subtree.

(Esta solución es una alternativa para los submódulos de Git)

Git subtree es otro método para fusionar ramas. Su idea es que al tener dos ramas, git entenderá que una rama no es una variación de la otra, sino una adición.

Idea general:

  1. - agregue el archivo a Github gist (se genera un mini repositorio)
  2. - enlazar el mini-repositorio a nuestro proyecto como una rama separada
  3. - asigne una carpeta para esta rama
  4. - desinflar.
  5. - luego trabajamos como con una rama regular (fusionar, confirmar, buscar ...)

Ahora detalles usando Git-extensiones.

1) Publicamos nuestro archivo con el código en https://gist.github.com donde podemos obtener inmediatamente un enlace al repositorio "mini":

imagen

Abra el repositorio de nuestro proyecto en GitExtensions y seleccione:

[Repositorio] -> [Repositorios remotos ...]

imagen

Nos conectamos como una rama separada.

Para hacer esto, presione [+] . Ingrese [Nombre] , [Url] y guarde [Guardar cambios] :

$git remote add "Util1" "https://gist.github.com/cf056e792d3bd9c2fc5973b846efe3d3.git" 

imagen

Vemos que estamos conectados al repositorio remoto.

A continuación, debemos asociar esta rama con una carpeta específica en nuestro proyecto para que el archivo se copie allí.

Para hacer esto, abra Git-bash (ctrl + G) y ejecute el comando:

 $git read-tree --prefix=Client/Assets/ -u Util1/master 

donde:

Cliente / Activos / - ruta a la carpeta en la que se copiará el archivo
Util1 / master : el nombre de la rama del repositorio remoto
(No encontré un camino a través de la interfaz de usuario)

La rama esencial se adjunta a nuestra carpeta en el proyecto. Y el archivo ya está allí.

Ahora podemos trabajar como con una rama regular.

Por ejemplo, si un archivo cambia en Gist, podemos obtener una nueva versión:

Hacemos Fetch All y vemos todos los cambios:

 $git fetch --progress "--all" 

Luego nos fusionamos para completar los cambios en nuestra rama:

 $git merge -s subtree --no-ff --allow-unrelated-histories Util1/master 

imagen

imagen

Resultado:

imagen

Informacion adicional:

https://git-scm.com/book/en/v1/Tools-Git-Merging-trees
https://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtree
https://www.nwcadence.com/blog/git-subtrees

Source: https://habr.com/ru/post/es419925/


All Articles