Pregunta Obtener ramas de git existentes para rastrear sucursales remotas


Mi flujo de trabajo habitual cuando trabajo con git es algo como esto:

  1. crear un repositorio local
  2. trabaje en ese repositorio, agregue / cambie archivos, etc.
  3. Decidir que quiero una ubicación remota central para el repositorio, y crear una
  4. enviar todas las confirmaciones desde mi repositorio local a este nuevo repositorio remoto

Ahora, sin embargo, quiero poder push y pull desde este repositorio remoto sin tener que especificar a dónde estoy presionando o tirando; Quiero que mi maestro local rastree el maestro remoto.

los apropiado La forma de hacer esto no está clara para mí, y no he podido determinarlo a partir de la documentación, aunque en realidad no debería ser más de un comando.

Debido a que es algo que solo se hace una vez por repositorio, generalmente he empleado una de las dos soluciones simples, pero hacky:

  1. usado git clone para crear un nuevo repositorio local y eliminar el anterior. Después de la clonación de git, el nuevo repositorio está configurado para rastrear el origen.
  2. editado manualmente .git / config para hacer el origen de la pista maestra.

Creo que debería poder ejecutar un comando, probablemente alguna forma de git remote configurar un repositorio existente para que la pista maestra sea un maestro remoto. ¿Alguien puede decirme qué es ese comando?


74
2017-07-26 12:58


origen


Respuestas:


Usa el argumento set-up arg:

git branch --set-upstream local-branch-name origin/remote-branch-name

Ejecutando el comando anterior actualiza su archivo .git / config correctamente e incluso verifica con este resultado:

"Branch-local-branch-name configurado para rastrear la rama remota remote-branch-name desde el origen".

EDITAR: Como martijn dijo: "En la versión Git v1.8.0, --set-upstream está en desuso. Use --set-upstream-to en su lugar".

git branch --set-upstream-to local-branch-name origin/remote-branch-name

Ver esta para más información.


147
2018-03-02 18:59



git help remote debería mostrarle lo que necesita saber. Creo que lo que quieres es

git remote add [remote-name] [remote-url]

# Set a local branch to follow the remote
git config branch.[branch-name].remote [remote-name]

# Set it to automatically merge with a specific remote branch when you pull
git config branch.[branch-name].merge [remote-master]

También puede editar manualmente .git / config para configurarlos.


19
2017-07-26 13:06



También puede usar esto si desea crear una nueva sucursal local para rastrear una sucursal remota:

git checkout --track -b [branch_name] --track origin[or other remote name]/[remote_branch_name] 

o mejor:

git checkout -t origin/branch_name

6
2017-07-01 14:55



En las versiones más nuevas de git puedes usar

git branch --track origin/branch_name

5
2017-09-09 11:34



The --set-upstream flag is deprecated and will be removed.

git branch master --set-upstream-to myupstream/master


1