¿Cómo mantener un repositorio de git bifurcado con ramas de características que no se extraerán aguas arriba?

8

Así que aquí hay un flujo de trabajo típico en Github ...

  1. Al igual que algún proyecto ->bifurcarlo -> git clone https://github.com/you/someproject.

  2. Proyecto abierto. Me gusta lo que ves, pero haz algunos cambios.

  3. Habiendo tenido cuidado de trabajar solo en un feature-branch( git checkout -b some-feature), decide realizar una solicitud de extracción con el upstreammantenedor, después de haber empujado feature-brancha su tenedor Github.

  4. El mantenedor, por cualquier razón, rechaza la atracción.

Por ejemplo ... aquí hay una solicitud de extracción fallida que envié que coincide con el escenario anterior. ..

Ahora por lo general , si el mantenedor se había fusionado el tirón ... el flujo de trabajo sería simple ... En mi máquina local, me gustaría cometer cualquier cambio local en lo feature-branchque estaba en ese momento ... git fetch --all, git checkout master, git pull upstream --ff-only. Luego repita mis cambios además de eso, como lo desee ...

PERO...

¿Qué sucede si decido que desea continuar trabajando en los cambios en mi bifurcación, sin problemas ... y aún así poder seguir y fusionar los cambios que ocurren upstream? Por lo general, eliminaría la rama de características y seguiría mi camino. ¿Cómo puede mantener una masterrama que pueda fusionarse en sentido ascendente, pero que mantenga las características de su bifurcación mientras está "desconectada permanentemente" de upstreamlas de HEAD?

alex grey
fuente
11
Los cambios gratuitos en el formato no serán aceptados en ningún proyecto en particular del que haya oído hablar alguna vez, y si insiste en mantenerlos en su repositorio, bienvenido a su pequeño infierno personal bien merecido. Si acaba de limpiar las advertencias, lo más probable es que sea aceptado, aunque es posible que se le solicite que lo envíe dividido en fragmentos de tamaño razonable. Incluso se pueden aceptar cambios para hacer que el formato sea ​​coherente . Pero los cambios que cambian el formato a uno diferente nunca lo son. Porque todos los demás están acostumbrados al formato actual y porque causará problemas con la fusión.
Jan Hudec
Solo por contexto, las estadísticas de diferencia de la solicitud de extracción son: "Mostrar 15 archivos modificados con 832 adiciones y 1,478 eliminaciones"
2
@ Jan Hudec Mi pregunta es sobre cómo usar las herramientas ... NO si te gusta mi solicitud de extracción , jajaja. Personalmente, no puedo lidiar con una licencia ENORME (en un proyecto OSS) en la parte superior de cada archivo F-ing, de ahí la gran cantidad de eliminaciones ... y los otros cambios fueron convencionales y no hicieron nada más que eliminar las advertencias del compilador y hacer El código realmente legible. De todos modos, esta pregunta es acerca de cómo uno puede "trabajar de manera diferente", sin que se le diga qué es "correcto" e "incorrecto".
alex gray
1
@alexgray: Por eso no lo escribo como respuesta, sino como comentario.
Jan Hudec

Respuestas:

6

Independientemente del uso de su escenario, así es cómo puede hacerlo:

  • el master es exactamente de la versión que tiene el master upstream
  • personalizado es su propia rama "maestra" en la que ha aplicado los cambios de formato
  • todas las ramas de características se ramifican de forma personalizada si no desea que se tomen en el maestro ascendente
  • Una vez que se actualiza el master, se vuelve a personalizar personalizado para masterizar y luego se vuelven a crear las ramas de características para personalizar

Con esta estrategia debería funcionar. Pero tenga en cuenta que cada cambio que realice en una rama de características basada en la costumbre no será aceptado en el maestro ascendente.

Jim Martens
fuente