¿Puedo asignar sucursales locales a sucursales remotas con diferentes prefijos en git?

StackOverflow https://stackoverflow.com/questions/167697

  •  03-07-2019
  •  | 
  •  

Pregunta

Estamos trabajando con un repositorio git semi-centralizado aquí donde trabajo. Cada desarrollador tiene su propio subárbol en el repositorio central de git, por lo que se ve así:

master
alice/branch1
alice/branch2
bob/branch1
michael/feature
release/1.0
release/1.1

Trabajando localmente en mi árbol tengo topic/feature, que corresponde a michael/feature en el árbol central.

He estado usando

git push origin topic/feature:michael/feature

para enviar mis cambios al árbol remoto. Sin embargo, esto es engorroso y propenso a errores (por ejemplo, omitir el nombre del desarrollador, escribir mal el nombre de la función, etc.).

Estoy buscando una forma más limpia de hacer esto. Por ejemplo, & Quot; git push & Quot ;. Sospecho que establecer un control remoto diferente con una referencia de búsqueda modificada lo hará, pero no estoy seguro de cómo hacerlo exactamente. Tampoco estoy seguro de cómo modificar mis definiciones de rama actuales para usar los diferentes controles remotos.

Mi .git/config actual se parece a:

[remote "origin"]
    url = git://central/git/project
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "topic/feature"]
    remote = origin
    merge = refs/heads/michael/project

Editar: también me gustaría aplicar esto a pulls / fetches. ¿Pero el branch.<name>.merge se encarga de eso?

Continuaré investigando esto y publicaré aquí si encuentro algo, pero espero obtener algunas otras buenas ideas.

Edición 2: he decidido que mantendré los nombres de sucursales locales y remotas iguales. Parece que será el menos trabajo y menos propenso a futuros problemas.

¿Fue útil?

Solución

Si puede, le sugiero que use los mismos nombres de rama localmente & amp; remotamente Entonces git push empujará todas sus sucursales locales a las sucursales correspondientes en el repositorio central.

Para usar diferentes prefijos en repositorios locales y remotos, debe agregar una asignación a su archivo de configuración cada vez que cree una nueva rama de características. El comando para configurar la asignación para el tema / BRANCH_NAME es

 git config remote.origin.push refs/heads/topic/BRANCH_NAME:michael/BRANCH_NAME

Otros consejos

En su sección [remoto " origen "], agregue una línea por mapeo. Incluyendo maestro a maestro.

push = refs/heads/master:master
push = refs/heads/topic/feature:michael/feature

No estoy seguro de cómo hacerlo con el comando git-config.

Tenga en cuenta que de ahora en adelante, todas las ramas se empujan al mismo tiempo cuando se hace un git push (sin parámetros).

¿Le gustaría explicar por qué no mantiene los mismos nombres de sucursal local y remotamente?

Puede asignar su rama a una rama de seguimiento diferente en el control remoto con algo como esto:

git remote add heroku git@heroku.com:YOURAPPNAME.git
git checkout -b heroku -t heroku/master

Su configuración termina de forma similar a lo que sugiere @Paul (un poco " más simple " en realidad).

Vea este resumen (con ajustes por mí) para conocer los pasos de uso que funcionan bien para mí https: //gist.github .com / 2002048 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top