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