¿Qué se considera como una mejor manera de mantener los cambios no supervisados: "git stash" o "git diff en un file de parche"?

[gdaniel@vnc23 sx_fit_regression]$ git status # On branch master # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: eth/utilities/eth_constants.py # modified: eth/utilities/eth_fdb_tools.py # modified: libs/tools/string_manipulation_tools.py # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .project # .pydevproject # eth/fdb/configuration/ no changes added to commit (use "git add" and/or "git commit -a") [gdaniel@vnc23 sx_fit_regression]$ [gdaniel@vnc23 sx_fit_regression]$ git fetch origin master From file:///mswg/git/switchx/sx_fit_regression * branch master -> FETCH_HEAD [gdaniel@vnc23 sx_fit_regression]$ git rebase --merge FETCH_HEAD cannot rebase: you have unstaged changes M eth/utilities/eth_constants.py M eth/utilities/eth_fdb_tools.py M libs/tools/string_manipulation_tools.py [gdaniel@vnc23 sx_fit_regression]$ 

Como puede ver, no puedo volver a establecer la base, porque tengo cambios no registrados.

Supongamos que necesito presionar los cambios de código anteriores en GIT.

Hasta donde yo sé, este es el flujo:

 "Code Review -> commit -> fetch -> rebase -> push" 

Supongamos que no puedo tener una revisión de código en la semana dada para los 3 files anteriores … Y me gustaría continuar trabajando en otros 2 files que requieren modificaciones de código y pueden tener una revisión de código para estos 2 files hoy.

Para que esto suceda, necesito mantener los cambios para los 3 files.

  1. Lo que es mejor: "git stash" o "git diff a un file de parche"

git diff HEAD ~ ..HEAD nombre de file> fileA.patch

  1. ¿Cómo guardo los 3 files por separado?

Gracias,

QWERTY

Simplemente envíe sus 3 files a una nueva sucursal. Las twigs son baratas.

 git checkout -b branch-3-files git commit -a git checkout master git pull ... work on other 2 files ... git commit git push ... review original 3 files ... git merge branch-3-files git push 

Por defecto, la creación de un escondite siempre saveá todo el estado a la vez. Sin embargo, puede utilizar la funcionalidad de parche para seleccionar interactivamente los cambios que desea almacenar. Para hacer eso, simplemente llámalo con --patch o -p en resumen.

En cuanto a la comparación con parches, debe considerar que los stashes son la solución integrada para "save" el estado actual y limpiar el directory de trabajo para que pueda trabajar temporalmente en otra cosa. Puede parecer más intuitivo usar parches si está acostumbrado a ellos, pero generalmente no necesita el process manualmente y puede usar los mecanismos de Git.

El uso de stashes tiene el beneficio de que, dado que los stashes son como commit, Git también almacena metadatos como el autor, la date y un post. Sin embargo, lo más importante es que también incluye un puntero a la confirmación principal, por lo que cuando aplicas el escondite más tarde, puede calcular la diferencia y fusionar automáticamente el alijo con cualquier cambio que pueda haber ocurrido en el medio. Cuando use parches, tendrá que resolver cualquier problema de forma manual.