Cómo crear un parche sin cometer en Git

Hice una búsqueda en línea. Sé que puedes usar formatting-patch después de commit. Pero mi situación es un poco diferente.

Quiero crear un parche, similar a "dpk" en SVN. Entonces puedo enviarlo para revisar el código. Pero todavía no quiero comprometerlo.

¿Cómo hago eso en GIT? cualquier GURU?

Comprometerse en Git es una operación barata y completamente local, por lo que no hay ninguna razón para evitar comprometerse mientras no lo empuje a ninguna parte.

Solo crea una nueva sucursal local y confirma tus cambios allí. Siempre puede eliminar la twig más tarde si ya no la quiere, o puede conservar la twig y usarla para trabajar en lo que sea que esté haciendo, luego fusionar (o volver a establecer la base) en la twig principal cuando esté list. Este es un buen flujo de trabajo para usar cuando se trabaja con Git.

$ git checkout -b feature-foo # create and switch to new branch feature-foo $ git commit # do whatever you need to do $ git checkout master # switch back to the master branch $ git merge feature-foo # merge your change into master (optional) $ git branch -d feature-foo # delete the branch 

Cuando otros chicos ya habían dado alguna respuesta que cumpliera con la convención de git, la pregunta del OP, "crear un parche sin compromiso", también se puede resolver de esta manera:

 git diff > my_patch.txt 

Más tarde puede aplicar este parche, también sin compromiso, de la siguiente manera:

 git apply my_patch.txt 

Pero si solo trabajas localmente, un git checkout another_branch -m es lo suficientemente bueno para llevar todos tus cambios de confirmación actuales a ese otro_branch, sin par ni siquiera y aplicar.

paso general para generar el parche sin compromiso al fin

  1. cometer sus cambios locales usando

     git commit -a -m "specific message" 

    Nota: no presione este compromiso.

  2. generar parche

     git format-patch -s -n -1 HEAD 

    generará 0001-.patch

  3. revertir el compromiso local

     git reset --soft HEAD~1 

    para eliminar commit pero mantener tu trabajo

     git reset --hard HEAD~1 

    para eliminar commit con tu trabajo

Al igual que @hammar dijo, el compromiso es barato y luego puedes deshacerte del commit con git reset etc.

También puede esconder y luego hacer:

 git stash show -p 

Un compromiso con un repository local en git no es "binding". Puede confirmar sus cambios, crear su parche y luego hacer un restablecimiento parcial en su sucursal a la confirmación anterior y es como si su compromiso nunca hubiera sucedido.

Dicho esto, realmente no hay ninguna razón por la que deba reiniciar su sucursal después de crear el parche. Puede dejar la confirmación en el repository y simplemente evitar presionar hasta que se complete la revisión del código. Si tiene que regresar y hacer cambios en la confirmación original, tiene opciones en ese punto.

Y si creas una twig para la confirmación, como hammar sugiere, hace que sea aún más fácil volver atrás y hacer cambios más tarde sin tener que volver a realizar ninguna operación molesta y tal en la twig principal antes de presionar.