2012-07-18 14 views
17

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

+0

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

Respuesta

-1

etapa todo lo que necesita, confirmar y luego restablecer o esconder para limpiar el directorio de trabajo para deshacerse de lo que no necesita.

4

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.

Stage/Discard hunk

+0

Sí, eso sería una solución. Estaba buscando una solución cli. Bu gracias de todos modos :) – Tieme

0

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 
+0

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

0

¿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.