DEV Community 👩‍💻👨‍💻

Zelkairi
Zelkairi

Posted on

Manejo de un repositorio privado dependiente de repositorio publico

A menudo encontramos proyectos de código abierto que cumplen con las características para ser usados en nuestros propios proyectos. Pero cuando uno no tiene tanto expertiz con git esto puede ser un poco complejo(como lo fue para mi).

A continuación veremos un proceso simple en el cual tenemos un repositorio publico original y nos disponemos a usarlo como base para nuestro propio proyecto privado.

Proyecto Publico
Subi este pequeño proyectito a un repositorio publico ,este simulara ser nuestro proyecto OPEN SOURCE
Image description

1.CLONADO DEL PROYECTO

Primero vamos a una carpeta y luego ejecutamos el famosos git clone,

PS C:\Users\sergi\Desktop\estudios\momentaneo> git clone https://github.com/rayo80/remoto-prueba.git
PS C:\Users\sergi\Desktop\estudios\momentaneo> cd remoto-prueba
Enter fullscreen mode Exit fullscreen mode

Podemos ver las ramas y los origenes remotos asociados(repositorio publico)
Image description

Aprovechamos y eliminamos el origen remoto (origin),esto lo hacemos para no confundirnos mas adelante.
Image description

2.CREACION DEL REPOSITORIO COPIA

Ahora crearemos un repositorio copia.
Image description

Veremos las indicaciones de siempre

Image description

Aunque todavía no subimos ,este sera el repositorio donde guardaremos nuestro propio proyecto privado que nacio siendo un clon.

_Notas:

  • Si usas la misma cuenta no tendrás problema pues las credenciales de github ya están en tu PC.
  • Si usas otra cuenta de github tendrías que hacer un nuevo logueo, en mi caso como quería ahorrar tiempo lo que hice fue agregar a la cuenta de mi pc como colaborador._

3.REALIZANDO CAMBIOS EN EL LOCAL

Realizamos los cambios que queramos a nuestro clon ,yo agregare un archivo más y escribiré mas líneas en el archivo original.
Image description
Image description

4.SUBIENDO EL CLON CON LOS CAMBIOS Al REPOSITORIO PRIVADO

EL clon ha sufrido cambios y se esta volviendo nuestro propio proyecto privado.
Primero agregamos un nuevo origen(este es el repo privado creado anteriormente), lo mejor es no usar "origin" pues con este hicimos referencia al open source original, yo le pondre "clonigin"

git remote add clonigin https://github.com/rayito80/REPOCLON.git

Enter fullscreen mode Exit fullscreen mode

Image description

hacemos un push

git push -u clonigin main 
Enter fullscreen mode Exit fullscreen mode

Y listo podemos ver que se subieron los cambios a nuestro repo privado
Image description

5.ACTUALIZANDO EL "OPENSOURCE"

Un proyecto de código abierto siempre esta actualizandose,resolviendo bugs,etc.
En mi caso le agregue una actualización un nuevo archivo.
Image description
Suponiendo que estos cambios también son útiles para nuestra aplicación privada clonada. Como los traemos a nuestra aplicación?

6.ACTUALIZANDO NUESTRO CLON PRIVADO

Para esto tenemos que volver a agregar el origen remoto del repositorio publico y usar los comando fetch y luego merge.
Image description

Realizamos un fetch del origin.Esto solo bajara los cambios del repo publico

git fetch origin
Enter fullscreen mode Exit fullscreen mode

Image description

Ahora lo que sigue es combinar esos cambios con nuestro proyecto actual local(nuestro main como lo indica la rama en verde).
Para esto usamos merge,indicamos origin/main pues este es el repo desde donde se estan trayendo los cambios que se agregaran a nuestro main.

git merge origin/main
Enter fullscreen mode Exit fullscreen mode

Image description

Podemos observar que justo al mandar el comando se agrega la actualización del repositorio publico
Image description

7.SUBIENDO LOS NUEVOS CAMBIOS A NUESTRO PROYECTO CLON PRIVADO

Este seria el último paso ,ahora que agregamos la actualización solo nos queda enviar los cambios a nuestro repositorio privado.

git push clonigin main
Enter fullscreen mode Exit fullscreen mode

Image description

Finalmente podemos eliminar de vuelta el remoto "origin" para no tener confusiones.

Esquema
Image description

Top comments (0)

We are hiring! Do you want to be our Senior Platform Engineer? Forem is hiring a Senior Platform Engineer

If you're interested in ops and site reliability and capable of dipping in to our Linux stack, we'd love your help shoring up our systems!