ospos/DESARROLLO-git-topics.md

5.3 KiB

Multirepositorio osposweb con git

git clone https://gitlab.com/osposweb/osposweb.git
cd osposweb/

sync pull de ambos

esto necesitara especificar de donde se hace el pull

git remote add github https://github.com/osposweb/osposweb.git
git remote add gitlab https://gitlab.com/osposweb/osposweb.git
git remote add gitea https://gitea.com/ospos/ospos.git

esto nos configura el repositorio en local en tu maquina asi:

git remote -v

github	https://github.com/osposweb/osposweb.git (fetch)
github	https://github.com/osposweb/osposweb.git (push)
gitlab	https://gitlab.com/osposweb/osposweb.git (fetch)
gitlab	https://gitlab.com/osposweb/osposweb.git (push)
origin	https://gitlab.com/osposweb/osposweb.git (fetch)
origin	https://gitlab.com/osposweb/osposweb.git (push)

tenemos en un solo lugar, el repo de github, el de gitlab, y (casualmente) esto realmente es por branchs, pero los branches (ramas) son iguales.

a) traer todo desde github y de gitlab y ligarlo todo en local en mi home

primero hay que cambiarse a la rama que se sincronizara

git remote update
git fetch
git checkout -b osposweb-oficial origin/osposweb-oficial

despues traemos todo desde remoto (github) a esa rama

git pull github osposweb-oficial
From https://github.com/osposweb/osposweb
 * branch              osposweb-oficial -> FETCH_HEAD
git pull gitea osposweb-oficial
From https://gitea.com/ospos/ospos
 * branch              osposweb-oficial -> FETCH_HEAD

esto traera todo lo que se tiene nuevo en github hasta el repo local, si queremos "ligarlo con gitlab, simplemente haremos lo mismo

git pull gitlab osposweb-oficial
Username for 'https://gitlab.com':
Password for 'https://mckaygerhard@gitlab.com': 
From https://gitlab.com/osposweb/osposweb
 * branch              osposweb-oficial -> FETCH_HEAD

y esto ahora hace que (si no hay conflictos) se lige todos los cambios en el lugar donde se clono en la maquina desde ambos github y gitlab, y actualmente tendria todo de ambos ligado (en el orden en que se realizo los pull)

sync push de ambos

esto hara que cualquier cambio se suba simultaneamente a ambos

git remote set-url --add --push origin https://github.com/osposweb/osposweb.git
git remote set-url --add --push origin https://gitlab.com/osposweb/osposweb.git

esto nos configura el repositorio en local en tu maquina asi:

git remote -v

github	https://github.com/osposweb/osposweb.git (fetch)
github	https://github.com/osposweb/osposweb.git (push)
gitlab	https://gitlab.com/osposweb/osposweb.git (fetch)
gitlab	https://gitlab.com/osposweb/osposweb.git (push)
origin	https://gitlab.com/osposweb/osposweb.git (fetch)
origin	https://github.com/osposweb/osposweb.git (push)
origin	https://gitlab.com/osposweb/osposweb.git (push)

adiciono una linea mas a lo mostrado anterior esto es que al hace push subirar a ambos origenes

**a) subir todo lo ligado a ambos...

primero hay que cambiarse a la rama que se sincronizara

git checkout -b osposweb-oficial origin/osposweb-oficial

despues traemos todo desde remoto (github) a esa rama

git pull --all

esto traera todo lo que se tiene nuevo en github y gitlab hasta el repo local, y esto ahora hce que (si no hay conflictos) se lige todos los cambios en y actualmente tendria todo de ambos ligado (en el orden en que se realizo los pull)

para subirlo todo ligado ahora solo hacemos un simple push

git push
Username for 'https://github.com': mckaygerhard
Password for 'https://mckaygerhard@github.com': 
Everything up-to-date
Username for 'https://gitlab.com': mckaygerhard
Password for 'https://mckaygerhard@gitlab.com': 
Everything up-to-date

esto subira por rama, es decir osposweb-oficial a cada uno (github y gitlab) todo esto es posible porque en ambos repos las ramas se llaman igual

b) bajar updates/cambios nuevos de github y subirlo a gitlab

esto es sincronizar el trabajo (ya que desde github se trae por pull request las traducciones)

git checkout -b osposweb-osposweb origin/osposweb-osposweb
git checkout osposweb-osposweb
git pull github osposweb-osposweb
git pull gitlab osposweb-osposweb

OJO Si existen diferencias dira que hay archivos modificados y no mexclara los cambios o no hara merge hay que ver con git status que archivos son lso modificados, y a cada uno segun los cambios que se deseen dejar o no realizar git checkout -- <ruta relativa al archivo>

despues traemos los updates/cambios desde remoto (github) a esa rama

git pull gitlab osposweb-oficial
From https://gitlab.com/osposweb/osposweb
 * branch              osposweb-oficial -> FETCH_HEAD
Merge made by the 'recursive' strategy.

OJO IMPORTANTE esto trae desde osposweb-oficial a la rama actual trabajandose,. recordar que estamos en osposweb-osposweb lo que significa que traera todo de esa rama y lo mexclara con la actual, es decir trae de osposweb-oficial y lo mexcla en osposweb-osposweb ya que el checkout que estamos o la rama que estamos es osposweb-osposweb...

y subimos con un push --all

movimiento de branches

git branch -m antiguo nuevo    # rename master on local
git push origin :antiguo         # delete master on remote
git push origin nuevo        # create develop on remote
git branch --unset-upstream