tag - ¿Puedo asignar sucursales locales a sucursales remotas con diferentes prefijos en git?
git remove tag (3)
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 un topic/feature
, que corresponde a michael/feature
en el árbol central.
He estado usando
git push origin topic/feature:michael/feature
para empujar 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 manera más limpia de hacer esto. Por ejemplo, " git push
". Sospecho que configurar un control remoto diferente con un refspec de búsqueda modificado lo hará, pero no estoy seguro de cómo hacerlo exactamente. Tampoco estoy seguro de cómo modificar las definiciones de mi rama actual para usar el control remoto diferente.
Mi .git/config
actual se ve algo así como:
[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, ¿la branch.<name>.merge
se ocupa de eso?
Continuaré investigando esto y publicando aquí si encuentro algo, pero espero obtener otras buenas ideas.
Editar 2: he decidido que mantendré los nombres de las sucursales locales y remotas de la misma manera. Parece que será el menos trabajo y menos propenso a problemas futuros.
En su sección [origen remoto "], agregue una línea por asignación. 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, a partir de ahora, todas las ramas se presionarán al mismo tiempo cuando realice un empuje recto de git (sin params).
¿Le importaría explicar por qué no mantiene los mismos nombres de sucursales local y remotamente?
Si puede, le sugiero que use los mismos nombres de sucursales local y remotamente. Luego, git push
empujará todas sus sucursales locales a las sucursales correspondientes en el repositorio central.
Para usar prefijos diferentes en los repos 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
Puede mapear su rama a una rama de seguimiento diferente en el control remoto con algo como esto:
git remote add heroku [email protected]:YOURAPPNAME.git
git checkout -b heroku -t heroku/master
Tu configuración termina de manera similar a lo que sugiere @Paul (un poco "más simple" en realidad).
Vea esta esencia (con ajustes por mi) para conocer los pasos de uso que me funcionan bien https://gist.github.com/2002048 .