Reviso manualmente una gran cantidad de cambios (en los 1000) realizados por un script de búsqueda y reemplazo en algunos catálogos de mensajes. Por el momento estoy haciendo git add -p
, pero sigo tomando descansos para verificar otros archivos o ajustar el guión, así que estoy alternando eso con git checkout -p
para descartar los cambios que no quiero. ¿Hay alguna forma de combinar los dos? Es decir. para cada trozo, quiero la opción de ponerlo en escena, o descartarlo.Simultáneamente git add -p y git checkout -p
Respuesta
etapa todo lo que necesita, confirmar y luego restablecer o esconder para limpiar el directorio de trabajo para deshacerse de lo que no necesita.
Si está utilizando Windows o Mac OS puede usar la aplicación gratuita SourceTree GUI que le permite organizar o descartar cada trozo (o incluso seleccionar líneas de cada trozo) en la vista diff.
Sí, eso sería una solución. Estaba buscando una solución cli. Bu gracias de todos modos :) – Tieme
cómo escribir sobre j - leave this hunk undecided, see next undecided hunk
de trozos que no desea poner en escena, y después de todo esto, ejecute git checkout --
, a continuación, tendrán lugar los trozos seleccionados, y otra descartados.
cuando se utiliza git add -p
, escribiendo ?
mostrará la ayuda
Stage this hunk [y,n,q,a,d,/,e,?]?
y - stage this hunk
n - do not stage this hunk
q - quit, do not stage this hunk nor any of the remaining ones
a - stage this and all the remaining hunks in the file
d - do not stage this hunk nor any of the remaining hunks in the file
g - select a hunk to go to
/- search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help
Siempre usando 'j' para todos los tíos que no quieras poner en escena te pondrán en un bucle ... Podrías usar' n' para todo lo que no quieras escenorar y luego 'git checkout - 'después de hecho ... pero eso no funcionará para el caso que traté de describir en mi comentario debajo de la pregunta. – Tieme
¿Ha tenido un vistazo a GUI git. Es una utilidad que viene incluida con git en estos días y trata de facilitar operaciones complejas que son una combinación de puesta en escena y pago y envío. Puede leer al respecto here
Puede elegir organizar un trozo y descartar el resto de los cambios. Al hacer ctrl + j
o cmd + j
puede consultar el archivo seleccionado.
Sé que es mucho más rápido usar git desde shell, pero en casos complejos como estos, cambiar entre diferentes comandos se convierte en una sobrecarga.
- 1. Mejor git add -p?
- 2. hg equivalente a git add -p?
- 3. git add/rm (cometer)
- 4. git checkout otra rama
- 5. "git branch --track" vs "git checkout --track"
- 6. git add remote branch
- 7. svn "git add" alternative?
- 8. Char * p, y scanf
- 9. ¿Cuáles son los comandos para usar Git Bash en Windows, p. cuando en modo git diff?
- 10. git add. vs git commit -a
- 11. gancho git-clone y post-checkout
- 12. Diferencia entre git remote add y git clone
- 13. Diferencia entre "git checkout <filename>" y "git checkout - - <filename>"
- 14. sobre "int const * p" y "const int * p"
- 15. Diferencia entre const char * p y const char * p
- 16. ¿Son "div> p" y "div p" iguales?
- 17. Git: deshacer cambios locales; git add. + git rm?
- 18. decimal (s, p) o número (s, p)?
- 19. Git: muestra más contexto cuando usas git add -i o git add -e?
- 20. git trabajando en dos ramas simultáneamente
- 21. Checkout disperso en Git 1.7.0?
- 22. Cómo deshacer "git add" durante una fusión?
- 23. ¿Cuál es la diferencia entre git add * y git add., Si hay alguno?
- 24. git add --patch with difftool
- 25. ¿Cuándo debería usar git add?
- 26. etiqueta git checkout, git pull falla en la rama
- 27. git checkout combina automáticamente las modificaciones locales
- 28. Convierta un checkout SVN para usar git (git-svn)
- 29. Manipulación de espacio duro: <p> </p> vs. <p></p>
- 30. Deshacer "git checkout CABEZA foo.c" en SCM git
Estoy teniendo el mismo problema. Usando 'git add -p' para seleccionar algunos trozos que me gustaría en mi primer commit. Cambiando a 'git checkout -p' para descartar algunos. Agregando más. Comprometerse y luego agregar todo lo que queda para un segundo compromiso. Sería genial combinar el complemento y el pago! – Tieme