¿Cómo puedo extraer todas las twigs desde el "origen" remoto y presionar a nuestro control remoto de "respaldo"?

Creé un nuevo usuario que se encargará de respaldar / sincronizar el control remoto de 'origen' con otro control remoto que hemos llamado 'copy de security'. Nuestro control remoto de Origin está en nuestra networking lcoa y la eliminación de respaldo está alojada en bitbucket.

Quiero que el usuario conecte todas las twigs que existen en Origin (todas las twigs de características, etc.) y una vez que las haya extraído, debería enviar todo al control remoto de "respaldo".

¿Qué commands necesito para lograr esto? ¿O hay otra manera?

Suponiendo que realmente no desea fusionar las twigs de origin remotas con las twigs locales en el repository local, entonces para "hacer una copy de security" de las twigs de origin en su estado actual en el repository Bitbucket, simplemente puede usar esto:

 git fetch origin && git push backup refs/remotes/origin/*:refs/heads/* 

Esto hace lo siguiente:

  1. Obtiene el estado actual de las twigs en el origin y almacena ese estado en las twigs de seguimiento remoto (references) en .git/refs/remotes/origin/ .

  2. Si la búsqueda tiene éxito, entonces se ejecuta el command push (para eso es && ). El push usa un refspec para decir "tomar todas las twigs de seguimiento remoto en .git/refs/remotes/origin/ , y enviarlas a la backup remota en las sucursales con el mismo nombre.

    El lado de destino del refspec,

     refs/heads/* 

    no es simétrico con el lado de la fuente,

     refs/remotes/origin/* 

    porque cada lado del colon : es relativo al repository de origen y destino:

    • En el lado de la fuente (el repository local), las twigs de seguimiento remoto de origin se almacenan todas bajo .git/refs/remotes/origin/ .

    • En el lado de la desición (el file de reserva), las sucursales locales se almacenan en .git/refs/heads/ . Esta es la razón por la cual el lado derecho del refspec tiene que coincidir con eso.

Solución alternativa modificada

Una forma ligeramente diferente de hacerlo es crear un repository simple como un "retransmisor", y configurarlo de tal manera que todo lo que necesita hacer es usar

 git fetch origin && git push backup --all 

Aquí está lo que tú necesitas hacer:

  1. Crea un repository simple

     git init --bare 
  2. Agregue los controles remotos de origen y destino

     git remote add origin <url-or-path-to-your-origin-remote> git remote add backup <bitbucket-repo-url> 
  3. Modifique el repository de retransmisión para recuperar la configuration para el control remoto de origin .

     git config remote.origin.fetch '+refs/heads/*:refs/heads/*' 

Ahora el repo del relevo está configurado correctamente para search las twigs locales desde el origin remoto, y almacenarlas como twigs locales en sí mismo con un simple

 git fetch origin 

Además, dado que ahora son sucursales locales almacenadas en .git/refs/heads/ , puede enviarlas todas de una vez al control remoto de backup con un simple

 git push backup --all 

En ese caso, ¿por qué no haces una copy de security del repoistory git sin usar el push y el pull?

git clone other / repo.git — esto hará una copy de security de cada repository de su control remoto.

O

Configurar el repository: clon de git – user de mirror @ origen: /repo.git

Después de eso, actualice la copy de security: git remote update desde la location del clon.

Puede usar los commands bash para crear un file sh y lo automatizará por usted.