La estrategia de Git para seguir aplicando mis cambios a la twig ascendente de otra persona

Tengo lo que creo que es un escenario muy común:

  • Cloné una twig de desarrollo de un proyecto de código abierto.
  • Luego creo una twig llamada mychanges , donde agrego un código al proyecto.

Ahora todo lo que deseo hacer es poder actualizar la twig de desarrollo para que refleje la última versión de desarrollo, pero al mismo time pueda mantener mis cambios.

¿Cómo se puede lograr esto?

Hice la siguiente testing:

  • Creado un notes.txt en un maestro
  • Ramificado a mychanges y salida
  • Agregó una línea
  • Fusionada para dominar
  • Se eliminó la línea en la versión en el maestro
  • Ahora el maestro tiene una versión sin la línea agregada, la twig mychanges lo tiene, pero si trato de fusionar mychanges al maestro nuevamente, git dice 'Ya está actualizado'.

También informa conflicto si fusiono la twig de desarrollo con mychanges

¡Gracias!

Ahora el maestro tiene una versión sin la línea agregada, la twig mychanges lo tiene, pero si trato de fusionar mychanges al maestro nuevamente, git dice 'Ya está actualizado'.

Esto se debe a que la twig mychanges está detrás de su twig master . Es decir, el master contiene todos los cambios que ocurrieron en mychanges .

También informa conflicto si fusiono la twig de desarrollo con mychanges

Tener un conflicto mientras fusionas dos twigs diferentes es normal; simplemente significa que las dos twigs tienen cambios diferentes y contradictorios en ellas, y que la fusión no se puede completar automáticamente. Supongo que ha editado un file que está en la twig de development , y ese git no puede funcionar si desea mantener los cambios del desarrollo de sucursales o mis cambios .

Ahora todo lo que deseo hacer es poder actualizar la twig de desarrollo para que refleje la última versión de desarrollo, pero al mismo time pueda mantener mis cambios.

Cuando git no puede combinarse automáticamente (es decir, no puede determinar qué cambios save y qué desechar en la fusión), puede seleccionar los cambios usted mismo, luego volver a combinar las twigs. Esto le permite seleccionar los cambios que desea; si desea los cambios que fueron de la twig de development , puede conservarlos. Sin embargo, si ha cambiado las mismas líneas de código que se modificaron en el development , puede savelas en su lugar.

Debería leer el libro de ejercicios , específicamente el capítulo tres , que le enseñará sobre las sucursales y, en el capítulo 3-6, rebasing sus cambios sobre los nuevos cambios del development .

El libro de progits es una gran fuente de información sobre el uso de git , y probablemente responda algunas de sus preguntas.

Una vez que lo fusionas, bueno, lo has combinado.

Si realiza confirmaciones después de la fusión (en el maestro), intentar fusionar nuevamente, por supuesto, dirá que ya está actualizado. Ese es el punto de hacer una fusión.

Si quería volver al estado anterior después de hacer una fusión, puede hacer un git reset --hard ORIG_HEAD . Ahora, si intenta fusionarse de nuevo, la fusión volverá a suceder.

Una vez que realice la fusión, el cambio se realizará en la sucursal y no será necesario "actualizarlo". Pero si cambias la twig en la que te fusionaste, de una manera que elimina cosas de tu fusión, no puedes esperar hacer una fusión nuevamente y traerla de return.

Puedes seguir modificando mychanges con master para que mychanges esté basado en HEAD of master siempre y luego, cuando sea necesario, unirlo al master.