2012-01-22 18 views
21

Aquí es mi escenario:¿Cómo funciona uno en una nueva rama de git que depende de otra rama de git que aún no se ha fusionado?

  • Mi proyecto está siguiendo el patrón de ramificación tema.

  • Creo una rama para solucionar algunos problemas, llamemos a esta rama problem_fixes. Realizo mis cambios y presento una solicitud de extracción.

  • Necesito comenzar a trabajar en una nueva característica, así que creo una segunda rama llamada my_feature y confirmo un montón de cambios.

  • En algún momento me doy cuenta de que my_feature depende de problem_fixes que aún no se han aceptado ni fusionado (la rama my_feature depende de algunas correcciones de la primera rama y no puedo avanzar sin ellas).

A menos de poner en peligro el proyecto de mi proyecto para aceptar y fusionar mi primera sucursal más rápido, ¿cuál es el mejor proceso a seguir aquí?

Me pregunto si necesito comenzar una nueva tercera rama basada en problem_fixes (en lugar de master) y fusionar mis commits a my_feature? ¿O estará bien si simplemente fusiono problem_fixes en my_feature y sigo trabajando? Asumiendo que problem_fixes se fusiona primero en master, cuando mi_feature se fusiona, teóricamente debería estar bien (?)

+0

Creo que su pregunta cabría mucho mejor en http://programmers.stackexchange.com/ – Theo

+1

@Theo: No lo creo. Esta pregunta se trata de "herramientas de software comúnmente utilizadas por los programadores", según las preguntas frecuentes. –

+3

meh, odio stackexchange. fragmentación ftw. gracias por el puntero, aunque voy a comprobarlo. (editar: categorías en stackoverflow me hubieran hecho mucho más feliz que un grupo afiliado de sitios separados) – mtjhax

Respuesta

9

Sí, creo que estás en el buen camino. Lo que haría es crear una nueva rama my_feature, tal vez trabaje un poco. Cuando me doy cuenta de que my_feature depende de problem_fixes, fusione esa rama. Esto podría suceder de inmediato si sabe que la necesitará. Luego, cuando my_feature se fusiona en el maestro, ya tendrá los cambios que necesita.

Tenga en cuenta que, siempre que tenga un procedimiento de revisión de código robusto, si intenta combinar my_feature en el maestro antes de problem_fixes, entonces se dará cuenta en ese momento.

+2

gracias greg, y por cierto buen cabello bro :) – mtjhax

10

Crea tu rama de tema fuera de la primera rama. Tan pronto como el primero se fusiona con el maestro puede volver a establecer la base además de eso, y suponiendo que no se haya cambiado demasiado, no debería ser un problema.

Si las confirmaciones de la primera rama no se modifican, su nueva rama se acumulará limpiamente encima de eso, y si las confirmaciones se modifican (aplastadas, editadas o lo que sea) siempre puede hacer una rebase interactiva de la segunda rama y edítelo para que se vea bien una vez que la primera rama se haya fusionado.

+1

Parece que tengo dos respuestas que parecen resolver mi problema. Greg respondió primero y con un poco más de instrucción paso por paso marcada como respuesta, pero votó por ti. Si pudiera, te daría +2 por forzarme a aprender sobre el rebasado, es un concepto de git realmente importante. – mtjhax

Cuestiones relacionadas