Cómo eliminar confirmaciones de una solicitud de extracción


Hice una pull request pero después de eso hice algunos commits al proyecto localmente que terminaron contaminando mi pull request, traté de eliminarlo pero sin suerte.

Encontré algunas preguntas similares en StackOverflow, pero no puedo aplicar lo que hay allí. Es mi primera solicitud de extracción en GitHub, así que es un poco extraño para mí cómo funciona todo esto.

La confirmación resaltada es la que necesito mantener y eliminar todas las demás cosas. Se convierte en el cuarto compromiso en la historia porque hacer algunas cosas de fusión.

introduzca la descripción de la imagen aquí

Mi registro de git introduzca la descripción de la imagen aquí

¿Puede alguien explicar qué está pasando y cómo solucionar este problema?

Author: ferit, 2016-03-23

3 answers

Tienes varias técnicas para hacerlo.

Este post-leer la parte sobre la reversión explicará en detalle lo que queremos hacer y cómo hacerlo.

Aquí está la solución más simple a su problema:

# Checkout the desired branch
git checkout <branch>

# Undo the desired commit
git revert <commit>

# Update the remote with the undo of the code
git push origin <branch>

El comando revert creará un nuevo commit con el undo del commit original.

 48
Author: CodeWizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:03:05

A la gente no le gustaría ver una confirmación incorrecta y una confirmación revertida para deshacer los cambios de la confirmación incorrecta. Esto contamina la historia del commit.

Aquí hay una forma sencilla de eliminar el commit incorrecto en lugar de deshacer los cambios con un commit revert.

  1. git checkout my-pull-request-branch

  2. git rebase -i HEAD~n // donde n es el número de últimas confirmaciones que desea incluir en interactive rebase.

  3. Reemplace pick con drop para las confirmaciones que desea descartar.
  4. Guardar y salida.
  5. git push --force
 12
Author: ferit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-06 06:12:59

Así que lo siguiente,

Digamos que el nombre de tu rama es my_branch y esta tiene las confirmaciones adicionales.

  1. git checkout -b my_branch_with_extra_commits (Mantener esta rama guardada bajo un nombre diferente)
  2. gitk (Abre la consola de git)
  3. Busca el commit que quieres mantener. Copia el SHA de esa confirmación en un bloc de notas.
  4. git checkout my_branch
  5. gitk (Esto abrirá la consola de git)
  6. Haga clic derecho en la confirmación a la que desea revertir (Estado antes de sus cambios) y haga clic en "reset branch to here"
  7. Hacer un git pull --rebase origin branch_name_to _merge_to
  8. git cherry-pick <SHA you copied in step 3. >

Ahora mira el historial de confirmaciones de rama local y asegúrate de que todo se vea bien.

 1
Author: Som Bhattacharyya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-27 14:44:10