es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Por qué git cherry-pick agrega cambios no incluidos en el commit (pero incluidos en la rama origen)

Estoy tratando de seleccionar un compromiso específico de la rama de origen (src-branch) para la rama de destino (dst-branch).

Por ejemplo, tengo un compromiso que cambia el archivo file1.txt:

El contenido de file1.txt en la rama de origen (src-branch) antes del compromiso es:

hello world!
goodbye world!

El contenido de file1.txt en la rama de origen (src-branch) después del compromiso es:

hello world!
goodbye world!
new changes here!

El contenido de file1.txt en la rama de destino (dst-branch) antes de realizar la selección del compromiso es:

hello world!

El contenido de file1.txt en la rama de destino (dst-branch) después de realizar la selección del compromiso es:

hello world!
goodbye world!
new changes here!

Sin embargo, espero que el archivo después de la selección del compromiso se vea así (sin goodbye world!):

hello world!
new changes here!

Esto se debe a que la línea goodbye world! no estaba incluida en los cambios del compromiso y, según mi conocimiento, cherry-pick debería aplicar únicamente los cambios del compromiso específico.

Me gustaría saber por qué sucede esto y cómo puedo prevenirlo. Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Es posible que la línea ¡adiós mundo! haya sido incluida accidentalmente en el commit que estás seleccionando mediante cherry-pick. En este caso, al realizar el cherry-pick del commit en la rama dst-branch, se aplicará el conjunto completo de cambios del commit, lo cual incluye la adición de ¡adiós mundo!.

    Para evitar que esto suceda, puedes utilizar git log para revisar los commits en la rama src-branch y asegurarte de que el commit que estás seleccionando solo incluye los cambios deseados. También puedes usar git diff para previsualizar los cambios que se aplicarán antes de realizar el cherry-pick del commit.

    Si el commit incluye cambios que no deseas aplicar, puedes crear un nuevo commit en la rama src-branch que solo incluya los cambios deseados, o puedes editar manualmente el archivo después de realizar el cherry-pick del commit para eliminar los cambios no deseados.

    También es importante tener en cuenta que si existen conflictos entre los cambios del commit seleccionado mediante cherry-pick y los cambios en la rama dst-branch, es posible que debas resolver estos conflictos manualmente antes de que se pueda completar exitosamente el cherry-pick.

Comments are closed.