Ejecuté "git status" y a continuación se enumeran algunos archivos que fueron modificados / o bajo el encabezado "cambios no efectuados para commit". También enumeró algunos archivos sin seguimiento que quiero ignorar (tengo un archivo ".gitignore" en estos directorios).
Quiero poner los archivos modificados en etapas para poder confirmarlos. Cuando ejecuté "git add", agregó los archivos modificados Y los archivos que quiero ignorar a la puesta en escena.
¿Cómo agrego solo los archivos modificados e ignoro los archivos no rastreados si se presenta el estado de git a continuación?
Además, ¿mis archivos ".gitignore" funcionan correctamente?
$ git status
# On branch addLocation
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: someProject/path/domain/viewer/LocationDO.java
# modified: someProject/path/service/ld/LdService.java
# modified: someProject/path/service/ld/LdServiceImpl.java
# modified: someProject/path/web/jsf/viewer/LocationFormAction.java
# modified: someProject/war/WEB-INF/classes/message/viewer/viewer.properties
# modified: someProject/war/page/viewer/searchForm.xhtml
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .metadata/
# someProject/build/
no changes added to commit (use "git add" and/or "git commit -a")
Respuestas:
Idealmente,
.gitignore
debe evitar que los archivos no rastreados (e ignorados) se muestren en estado, agregados usandogit add
etc. Así que le pediría que corrija su.gitignore
Puede hacerlo
git add -u
para organizar los archivos modificados y eliminados.También puede hacer
git commit -a
para confirmar solo los archivos modificados y eliminados.Tenga en cuenta que si tiene Git de versión anterior a 2.0 y se usa
git add .
, entonces deberá usarlogit add -u .
(consulte " Diferencia de"git add -A
"ygit add .
" ").fuente
add -u
) no agrega solomodified
archivos, sino que también "agrega"deleted
unos ... algo que actualmente estoy tratando de evitar.for fil in $(git diff --name-only --relative); do git add $fil; done
. Si lo usara mucho (no lo hago), solo haría un alias para esto en mi~/.bashrc
archivo. Esto, por supuesto, solo funciona en bash.IFS=$(echo -en "\n\b"); for file in $(git diff --name-only); do git add "$file"; done
git add -u
es cortogit add --update
ygit commit -a
es corto paragit commit --all
Esto funcionó para mí:
O mejor:
fuente
git add -u
, por lo que no responde la pregunta.-a: Incluye todos los archivos actualmente modificados / eliminados en esta confirmación. Sin embargo, tenga en cuenta que los archivos no rastreados (nuevos) no están incluidos.
-m: establece el mensaje de confirmación
fuente
No dijiste cuál es actualmente tu
.gitignore
, pero un.gitignore
con los siguientes contenidos en tu directorio raíz debería ser el truco.fuente
gitognore
contenía un comienzo (ignorar todo). Pero una sola.gitignore
en el directorio superior suele ser mucho más simple de usar y suficiente.Intenté probar esto para poder ver primero la lista de archivos:
ejecutar:
Editar: (ver comentarios) Esto podría lograrse en un solo paso:
fuente
git status | grep modified | awk '{print $2}' | xargs git add && git status
No estoy seguro si esta es una característica o un error, pero esto funcionó para nosotros:
git commit '' -m "Message"
Tenga en cuenta la lista de archivos vacía ''. Git interpreta esto para confirmar todos los archivos rastreados modificados, incluso si no están organizados, e ignora los archivos no rastreados.
fuente
Para organizar archivos modificados y eliminados
git add -u
fuente