Eliminar un archivo modificado de la solicitud de extracción

103

Tengo 3 archivos modificados (sin archivos nuevos) en una solicitud de extracción en este momento.

Me gustaría eliminar uno de esos archivos de la solicitud de extracción, de modo que la solicitud de extracción solo contenga cambios en dos archivos y deje el tercero en su estado original sin tocar.

He intentado un par de cosas (verificando la versión original del archivo, etc.) pero todavía se muestra como un archivo modificado en el PR.

¿Hay una solución para esto?

jlee
fuente
Si las modificaciones al archivo están en sus propias confirmaciones, puede hacer una rebase interactiva y eliminar las confirmaciones que afectan al archivo que desea sin cambios, y luego hacer un empuje forzado a su rama. Github debería detectar eso automáticamente.
Dentych

Respuestas:

242

Cambie a la rama desde la que creó la solicitud de extracción:

$ git checkout pull-request-branch

Sobrescriba los archivos modificados con el archivo en otra rama, consideremos que es maestro :

git checkout origin/master -- src/main/java/HelloWorld.java

Confirme y empújelo hacia el control remoto:

git commit -m "Removed a modified file from pull request"
git push origin pull-request-branch
Arpit Aggarwal
fuente
4
No funciona y me muestra el error: pathpec '{file / path.js}' no coincide con ningún archivo conocido por git.
raftaar1191
8
Está funcionando y es una solución probada, simplemente verifique su ruta correctamente
Pavan T
2
esto funciona para los archivos alrededor del archivo en el que realmente quiero realizar la acción ... así que no creo que haya algo mal en la ruta
Tim Boland
1
@ArpitAggarwal esto está funcionando bien. Muchas gracias.
Chaklader Asfak Arefe
1
Esto es brillante. Extremadamente útil.
Jake
10

Querrá modificar la confirmación y luego hacer un empuje forzado que actualizará la rama con el PR.

Así es como te recomiendo que hagas esto:

  1. Cierre el PR para que quien lo esté revisando no lo incorpore hasta que haya realizado los cambios.
  2. Haga un restablecimiento parcial a la confirmación antes de su cambio no deseado (si esta es la última confirmación que puede usar git reset --soft HEAD^o si es una confirmación diferente, querrá reemplazar 'HEAD ^' con la identificación de la confirmación)
  3. Descarte (o deshaga) cualquier cambio en el archivo que no tenía la intención de actualizar
  4. Hacer un nuevo compromiso git commit -a -c ORIG_HEAD
  5. Force Push a tu sucursal
  6. Reabrir solicitud de extracción

Ahora que su sucursal se ha actualizado, la solicitud de extracción incluirá sus cambios.

Aquí hay un enlace a la documentación de Gits donde tienen un buen ejemplo en Deshacer una confirmación y rehacer .

Keif Kraken
fuente
-5

Una solicitud de extracción es solo eso: una solicitud para fusionar una rama con otra.

Tu solicitud de extracción no "contiene" nada, es solo un marcador que dice "fusiona esta rama en esa".

El conjunto de cambios que muestra el PR en la interfaz de usuario web son solo los cambios entre la rama de destino y la rama de su función. Para modificar su solicitud de extracción, debe modificar su rama de características, probablemente con un empuje forzado a la rama de características.

En su caso, probablemente querrá modificar su compromiso. No estoy seguro de su situación exacta, pero alguna combinación de rebase interactiva y add -pdebería resolverlo.

Chris Kitching
fuente