Me encanta git add --interactive . Ahora es parte de mi flujo de trabajo diario.
El problema parece que no funciona con archivos sin seguimiento. Lo que quiero hacer es rastrear un nuevo archivo, pero solo agregar parte de él, es decir, algunas partes de este nuevo archivo aún no están listas para su puesta en escena.
Por ejemplo, con git add -i, puedo elegir la opción de parche e incluso editar trozos individuales para organizar partes del nuevo código, dejando sin comentarios los comentarios del código de depuración. Me encanta trabajar de esta manera porque hace obvio en qué lugares del mega parche en el que estoy trabajando todavía necesitan trabajar.
Desafortunadamente, parece que no puedo hacer lo mismo con un archivo sin seguimiento. O pongo en escena todo el archivo o nada. La solución que he estado usando es organizar o incluso confirmar un nuevo archivo cuando está vacío, y luego organizar cambios individuales de la manera habitual. Pero esta solución se siente como un truco sucio y cuando olvido, o cambio de opinión, crea más problemas de los que debería haber.
Entonces, la pregunta es: ¿Cómo organizar solo una parte de un nuevo archivo, para que este nuevo archivo sea rastreado pero dejando todo o parte de su contenido sin clasificar?
</shame>
-N
descubrimiento, gracias! Aunque preferiría combinarlo-p
en ese caso.gid add -N the_file
&git add -p
. Cabe agregar que-N
también funciona con-A
La forma más fácil de hacer esto (y la puesta en escena interactiva de IMHO en general) es
git gui
. Viene incluido con git y debería funcionar en casi todas las plataformas compatibles con git.Simplemente ejecute
git gui
y se abrirá una interfaz gráfica de usuario que permite colocar trozos en escena y sin escena e incluso líneas individuales de archivos rastreados y no rastreados.fuente
git gui
. En Debian, por ejemplo, está en un paquete separado llamado 'git-gui'.git gui
nunca ha funcionado. De hecho, deshabilita estas opciones de menú .git gui
para un nuevo archivo,git add -N new_file
primero debe ejecutarlo ; consulte la respuesta de Richard Hansen.Demo simple:
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
lugar. No recomiendo hacer eso_NUL:
lugar de/dev/null
. De lo contrario, use algo comoecho -n '' | git hash-object --stdin -w
Ahora el índice contendrá
newfile
como el blob vacío, y el blob vacío se ha ingresado en la base de datos de objetos si aún no existía:Esto debería ser precisamente lo que quieres. ¿Puedo recomendar también el complemento fugitivo vim para una gestión de índice muy inteligente (ver Better git add -p? )
fuente
Editar: esto no parece estar funcionando ahora. Estoy seguro de que era antes (en git 1.7.1). En caso de que no funcione, sugiero la puesta
/dev/null
en escena como sehe sugiere arriba:Si está en Windows (sin
/dev/null
), puede reemplazarlo con la ruta a un archivo vacío.Respuesta original
Usted quiere
Esto agrega archivos sin seguimiento para mí. Desde la página del manual:
fuente
git add -p newfile
no funciona en absoluto (efecto nu) ygit add --interactive
'[a] dd sin seguimiento' tiene el efecto quegit add newfile
tiene; Editar también marcado con git 1.7.5.3; sin dadosSolo para el registro de otra posibilidad: yo uso
Y luego puedes montar trozos o editarlos en su lugar.
fuente
add -N
conadd -i
. Acabo de agregar eso enadd -p
lugar deadd -i
obras, también.