Hice una request de extracción de mi twig principal. Ahora que la request está pendiente y deseo enviar otra request

Entonces, soy nuevo para Git y Github.

Estoy contribuyendo a este proyecto y solucioné un problema.

No sabía que no debería hacer una request de extracción de la twig principal. Ahora mi request de extracción está pendiente. Y quiero hacer otra request de extracción de algún otro problema.

Esto es lo que hice.

Empujó los cambios a la twig principal e hizo una request de extracción. Ahora mi repository bifurcado es uno antes del original.

Solucioné otro problema y realicé cambios en la twig principal. Después de hacer esto, me di count de que algo andaba mal. Mi repository ahora tenía 2 commits por delante del original. Pensé que podrías enviar requestes de extracción para confirmaciones individuales, pero no puedes hacer eso.

git push -f origin HEAD^:master 

Lo usé para deshacer los cambios. Ahora mi repository es uno antes del original. Creé otra twig para ese problema en particular.

Mi pregunta es cómo puedo eliminar ese compromiso que hice para dominar la sucursal en la nueva sucursal que acabo de crear y luego presionar los cambios que deshice antes en esta nueva sucursal.

En este momento, mis cambios son de compromiso y esperan ser empujados (nuevo problema). Si pudiera devolverlo al estado de desestabilización, entonces puedo eliminar mi 1er commit utilizando git push -f origin HEAD^:<new branch> y luego comprometerme con él.

Espero que esto esté claro.

Reparar su request de extracción

¿Estás seguro de que nadie más ha revisado los cambios en la request de extracción con la confirmación involuntaria? Si está seguro, puede presionar HEAD^ de su master local a su master GitHub, de la manera que usted mismo encontró:

 git push -f origin HEAD^:master 

Esto eliminará efectivamente la confirmación involuntaria de la request de extracción.

Si alguien ya ha revisado los cambios en su request de extracción, nada de esto podría importar. (Tal vez una disculpa se debe al desastre).

Crear otra request de extracción

Lo ideal es que una nueva request de extracción utilice una twig que esté basada en la última versión del maestro remoto, sin include los cambios pendientes en su primera request de extracción. Así es como debe crear una nueva twig antes de trabajar en una segunda request de extracción:

 git fetch upstream # assuming that "upstream" is the repo of the project maintainers git checkout -b next-feature upstream/master # hack hack hack git commit -m 'hack hack hack' git push -u origin HEAD # -> Go to GitHub and create the pull request 

Si su próxima característica depende de la request de extracción pendiente, entonces está bien crear una nueva twig a partir de la actual, en lugar de una nueva copy de upstream/master . Sin embargo, en este caso, no cree la request de extracción antes de que se acepte la anterior. Si lo haces y alguien revisa la segunda request de extracción antes de la primera, verá todos los cambios que hiciste en la primera y la segunda request de extracción, lo que puede ser confuso. Espere hasta que se acepte la primera y cree la segunda después.

Las requestes de extracción funcionan en las sucursales e incluyen todas las confirmaciones que están en esa twig pero no en la twig de destino a la que envía su request de extracción.

Para enviar una segunda request de extracción independiente, simplemente cree una nueva twig fuera de la confirmación base original (es decir, el maestro upstream), presione esa nueva bifurcación y envíe una request de extracción desde esa nueva sucursal dirigida al mismo maestro.

Entonces, si su primera request de extracción solo contiene una confirmación, podría hacer lo siguiente:

 # create a new branch used for the first pull request git branch pull_request_1 # reset `master` so it points to the commit before your PR git reset --hard HEAD~1 # create and checkout a new branch for your new pull request git checkout -b pull_request_2 # do work and commit git commit … # push the new branch git push origin pull_request_2 

Ahora, también puede presionar la twig pull_request_1 y forzar el master su fork para que coincida con la twig ascendente otra vez, pero dado que su primera request de extracción hace reference a su twig master y no a la twig pull_request_1 entonces no existente, esto afectaría su request de extracción . Entonces, la mejor opción es esperar hasta que se resuelva la primera request de extracción. Sin embargo, para el futuro, siempre debe considerar crear una nueva twig para cada request de extracción que cree, de modo que no confunda las confirmaciones que son realmente parte del repository aguas arriba y sus propias confirmaciones que desea enviar de forma independiente.