Las sucursales locales aparecen en la vista "Red" de GitHub

Estamos usando Git y nuestro flujo de trabajo consiste en una twig 'dev' y 'master' que vive en GitHub y en el repository local de cada desarrollador. No se realiza ningún trabajo directamente en 'master' o 'dev', sino en las sucursales locales y solo se producen fusiones en 'dev' y luego en 'master'. No impulsamos sucursales locales a GitHub.

Por alguna razón, las sucursales locales de los desarrolladores aparecen en la vista de "Red" en GitHub y esto complica el diagtwig de networking (debo señalar que la twig en sí misma no existe en la list de sucursales en GitHub).

Mi pregunta es si esto es un comportamiento normal y ocurre automáticamente como un medio para mostrar de dónde provienen los cambios a 'dev' y 'master' o es porque alguien presionó una sucursal local por error y la eliminó luego? Si es el último, ¿hay alguna manera de limpiar el desorder?

Los artefactos que está viendo en la vista de "networking" son probablemente rastros de su flujo de trabajo basado en fusión.

Cuando una operación de fusión da como resultado una fusión * (es decir, no es un "avance rápido"), el model DAG del historial del repository includeá partes que representan ambas twigs. Cuando se empuja la twig no local, su ascendencia includeá las confirmaciones que se hicieron originalmente en la sucursal local.
* Ya sea usando git merge --no-ff o porque ambas twigs se movieron más allá de su base de fusión.

Considere una serie hipotética de events y la historia resultante DAG + refs en el repository central:

 A$ git fetch && git checkout -b foo central/dev # A works and commits to her local branch B$ git fetch && git checkout -b bar central/dev # A and B work and commit to their local branches A$ git checkout dev && git pull && git merge --no-ff foo && git push central dev # B works and commits to his local branch C$ git fetch && git checkout -b quux central/dev # B and C work and commit to their local branches B$ git checkout dev && git pull && git merge --no-ff bar && git push central dev C$ git checkout dev && git pull && git merge --no-ff quux && git push central dev D$ git fetch && git checkout master && git pull && git merge --no-ff dev && git push central master ---o---o-------------------------------D master \ / \ o---o---o / (was quux in C's local repository) \ o---o / \ / (was foo in A's local repository) \ / \ / \ / o-------A---------B---C dev \ / o---o----o----o (was bar in B's local repository) 

En ningún momento las twigs locales ( foo , bar , quux ) se enviaron directamente al repository central. Sin embargo, las confirmaciones "fusionar" se referencen mediante las asignaciones de fusión que se envían a la twig dev (y luego a la twig principal ) en el repository central.

Sospecho que la vista de networking de GitHub te muestra estas twigs empujadas indirectamente.

Si desea eliminar dicha evidencia topológica de twigs, deberá pasar al flujo de trabajo que se basa en operaciones de rebase en lugar de operaciones de fusión (esto implica que se descartará el "punto de horquilla" original de la twig local, que puede o puede ser no ser importante para su flujo de trabajo general).

No te empantes tratando de hacer que los DAG parezcan "bonitos". A las herramientas no les importa si los DAG son "feos", como tampoco tú. Debe concentrarse en elegir y utilizar correctamente un flujo de trabajo de bifurcación que produzca un DAG que permita que las herramientas le resulten útiles.

Las sucursales locales no deberían aparecer en github, no. A less que alguien haya dicho

 git push origin branch_name 

no hay forma de que el origen (en este caso, github) pueda saber sobre la twig.

Si la twig ya no existe como una twig local, puede eliminarla del origen mediante

 git push origin :branch_name