Max Fray
Tengo una lista de archivos modificados en el repositorio de git. Hay un archivo que no quiero enviar por el momento actual. Puedo:
git commit -a
¿Para confirmar todos los archivos y luego eliminar ese archivo de la confirmación actual? Después de tal eliminación, aún debería estar en la lista de archivos no comprometidos.
Quieres hacer esto:
git add -u
git reset HEAD path/to/file
git commit
Asegúrese de hacer esto desde el nivel superior del repositorio; add -u
agrega cambios en el directorio actual (recursivamente).
La línea clave le dice a git que restablezca la versión de la ruta dada en el índice (el área de preparación para la confirmación) a la versión de HEAD (la confirmación actualmente verificada).
Y una advertencia anticipada de un problema para otros que lean esto: add -u
organiza todas las modificaciones, pero no agrega archivos sin seguimiento. Esto es lo mismo que commit -a
lo hace. Si también desea agregar archivos sin seguimiento, use add .
agregar recursivamente todo.
-
Para poner en paz cualquier mente que esté nerviosa, este conjunto de comandos no cambie sus archivos de código reales en el disco, solo sacará el archivo especificado de esta confirmación actual (que es lo que se solicitó originalmente). Grandes arriba 🙂
– Will Buck
11/03/2013 a las 21:14
-
También debe editar .gitignore y agregar la ruta/al/archivo si sabe que nunca desea que se agregue a la confirmación
– Xarse
29 de marzo de 2013 a las 20:22
DavidR
git rm --cached
lo eliminará del conjunto de confirmaciones (“des-agregarlo”); eso suena como lo que quieres.
-
Si el archivo existe en el repositorio, al ejecutar este comando y luego confirmar se eliminará el archivo.
– Marinos An
21 de febrero de 2017 a las 16:39
-
Esta es la respuesta correcta a esta pregunta. La mejor respuesta no ayudó a mi problema. Tuve que eliminar el archivo de la lista de confirmación emitiendo
git rm --cached <file>
-Nicole Finnie
10 de abril de 2018 a las 8:42
-
no funcionó para mí. El archivo eliminado no aparece cuando hago git diff. ¡Elimina el archivo!
– relámpago
9 de agosto de 2018 a las 10:33
si ya ha empujado su compromiso, entonces. hacer
git checkout origin/<remote-branch> <filename>
git commit --amend
Y si no ha enviado los cambios al servidor, puede usar
git reset --soft HEAD~1
Usa alijo; como esto:
git add .
git reset Files/I/Want/To/Keep
git stash --keep-index
git commit -a -m "Done!"
git stash pop
Si usted accidentalmente confirme un archivo y desee reescribir su historial de git, use:
git reset HEAD~1 path/to/file
git commit -a -m "rollback"
git rebase -i HEAD~2
y squash a los dos commits principales. Puede escribir un script de ayuda para hacer cualquiera de estos si tiene un conjunto conocido de archivos que prefiere no confirmar automáticamente.
ThR37
Tal vez también podría usar stash para almacenar temporalmente sus modificaciones en un archivo de parche y luego volver a aplicarlo (después de un pago para volver a la versión anterior). Esto podría estar relacionado con este otro tema: ¿Cómo extraería un solo archivo (o cambios en un archivo) de un alijo de git?
-
git stash
es realmente útil, pero es mucho más complicado quereset HEAD <path>
para usarlo para este caso (no exactamente para lo que está diseñado). No hay necesidad de molestarse con él, o parches.– Cascabel
25 de agosto de 2010 a las 13:29
-
@Jefromi Sí, probablemente tengas razón, pero siempre es útil conocer formas alternativas (y el tema vinculado está bien respondido, así que…). Tal vez debería haber dado el enlace en un comentario…
– ThR37
25 de agosto de 2010 a las 14:37
David
si hizo un agregado de git y aún no ha enviado nada, solo tiene que hacer esto para eliminarlo de su confirmación.
git reset HEAD <file>
-
git stash
es realmente útil, pero es mucho más complicado quereset HEAD <path>
para usarlo para este caso (no exactamente para lo que está diseñado). No hay necesidad de molestarse con él, o parches.– Cascabel
25 de agosto de 2010 a las 13:29
-
@Jefromi Sí, probablemente tengas razón, pero siempre es útil conocer formas alternativas (y el tema vinculado está bien respondido, así que…). Tal vez debería haber dado el enlace en un comentario…
– ThR37
25 de agosto de 2010 a las 14:37
eric aya
Responder:
git reset HEAD path/to/file
-
Según el comentario sobre la pregunta, esto parece algo diferente de lo que el OP realmente quiere hacer. La pregunta no estaba muy clara en eso.
– Jim L.
7 febrero 2018 a las 15:35
¿Desea eliminar el archivo en la confirmación que está realizando o simplemente no desea confirmar los cambios que tiene en ese archivo todavía?
–CB Bailey
25 de agosto de 2010 a las 10:01
@charles-bailey Quiero agregarlo a la confirmación y luego eliminarlo.
– Max Fray
25 de agosto de 2010 a las 10:20
Eso no respondió a mi pregunta, al menos no estoy seguro de lo que quieres decir exactamente. Dijiste que “no quieres comprometerte por el momento actual”. ¿Eso significa que simplemente no desea realizar ningún cambio en el archivo en la próxima confirmación, o desea activamente que la próxima confirmación elimine los archivos y luego volverá a agregarlos en una confirmación posterior?
–CB Bailey
25 de agosto de 2010 a las 11:23
@ charles-bailey primero: simplemente no quiero realizar ningún cambio en el archivo en la próxima confirmación. Pero no quiero agregar todos los demás archivos a mano. Así que quiero agregarlos todos. Y después de eso, simplemente elimine algún archivo del próximo compromiso.
– Max Fray
25 de agosto de 2010 a las 11:55
Encontré esta pregunta buscando en Google un problema diferente… Creo que el título es un poco engañoso, tal vez sería mejor “Omitir un archivo para que no se confirme” (todavía no se ha confirmado, por lo que no lo está eliminando de una confirmación, que es lo que tengo que hacer!)
– Anentrópico
4 sep 2012 a las 15:11