¿Git commit -a "archivos sin seguimiento"?

92

Cuando hago una git commit -a, veo lo siguiente:

  # Please enter the commit message for your changes. Lines starting
  # with '#' will be ignored, and an empty message aborts the commit.
  # On branch better_tag_show
  # Changes to be committed:
  #   (use "git reset HEAD <file>..." to unstage)
  #
  # modified:   ../assets/stylesheets/application.css
  # modified:   ../views/pages/home.html.erb
  # modified:   ../views/tags/show.html.erb
  # modified:   ../../db/seeds.rb
  #
  # Untracked files:
  #   (use "git add <file>..." to include in what will be committed)
  #
  # ../assets/stylesheets/
  # ../views/pages/

¿Qué significan esos archivos sin seguimiento? De hecho, se ha realizado un seguimiento de todos los cambios. No entiendo por qué git me advierte sobre archivos sin seguimiento aquí.

EDITAR :

Ok, veo muchas respuestas confusas. Esto es lo que pasa después de git commit -aesto.

# On branch master
nothing to commit (working directory clean)

Como puede ver, no hay NADA más que esos cuatro archivos a los que se les aplicaron cambios.

Mi pregunta debería reformularse de la siguiente manera: ¿Por qué git me advierte sobre los archivos sin seguimiento cuando se ha realizado un seguimiento de todos los cambios en esta confirmación?

En otras palabras, ¿ es innecesaria la advertencia sin seguimiento en el mensaje de confirmación de git ?

desaparecido
fuente
1
(use "git add <file>..." to include in what will be committed)
zengr
1
zengr que no es necesario porque git commit -a confirmará todos los cambios en los archivos que se han rastreado.
desapareció el
3
Que es necesaria cuando los archivos nunca han sido added hasta ahora. De los documentos para -a: Dígale al comando que organice automáticamente los archivos que se han modificado y eliminado, pero los archivos nuevos que no le ha informado a git no se ven afectados .
Noufal Ibrahim
¿Por qué dices que git te está 'advirtiendo'? Como yo lo veo, el mensaje de archivos 'sin seguimiento' es informativo. Depende de usted ver si esos archivos deben administrarse y actuar en consecuencia.
sateesh
@sateesh Bueno, como quieras llamarlo, todavía no creo que esto sea realmente útil. ¿Cómo es esto informativo? ¿Que se supone que haga? ¿Leíste mi publicación en la sección "EDITAR" donde escribí que no hay modificaciones en ningún otro archivo excepto en los enumerados anteriormente? Si encuentra esto informativo, es equivalente a que yo le diga que cualquier carpeta aleatoria en su árbol de repositorios no será rastreada cuando no hay nada de qué preocuparse.
desapareció el

Respuestas:

105

Para otros que tengan el mismo problema, intente ejecutar

git add . que agregará todos los archivos del directorio actual para realizar un seguimiento (incluidos los sin seguimiento) y luego usar

git commit -a para confirmar todos los archivos rastreados.

Como sugirió @Pacerier, un revestimiento que hace lo mismo es

git add -A

coding_idiot
fuente
4
git commit -aconfirmará todos los archivos rastreados, no rastreará los archivos no rastreados. git add .rastreará los archivos sin seguimiento en el directorio actual. git add -arastreará todos los archivos sin seguimiento.
aquí
@matteo lo es git add -A, no git commit -A. Por lo que puedo decir, no hay un interruptor al que pueda pasar git commitque incluya archivos sin seguimiento.
Len
1
-a parece estar obsoleto solo por A ahora. Gracias de todos modos. :)
tcratius
Para obtener más información sobre esos comandos, puede consultar: stackoverflow.com/questions/572549/…
Onat Korucu
30

git commit -am "msg"no es lo mismo que git add fileygit commit -m "msg"

Si tiene algunos archivos que nunca se agregaron al seguimiento de git, aún debe hacerlo git add file

El comando "git commit -a" es un atajo a un proceso de dos pasos. Después de modificar un archivo que ya es conocido por el repositorio, todavía tiene que decirle al repositorio: “¡Oye! Quiero agregar esto a los archivos preparados y eventualmente enviárselo ". Eso se hace emitiendo el comando "git add". "Git commit -a" es preparar el archivo y enviarlo en un solo paso.

Fuente: "git commit -a" y "git add"

Zengr
fuente
pero, como dijiste, git commit -a = git add. + git commit, ¿por qué no agregaría automáticamente el archivo al área de seguimiento? ....
Johnny
1
@Johnny: git commit -ano es igual a git add .+ git commit. El git addpaso agrega solo los archivos que se enumeran como modificados en su git status, no todo en el directorio actual.
Soren Bjornstad
¡Sí, lo descubrí hoy!
KansaiRobot
9

Debes escribir en la línea de comando

git add --all

Esto confirmará todos los archivos sin seguimiento

Editar:

Después de preparar sus archivos, están listos para su confirmación, por lo que su próximo comando debería ser

git commit -am "Your commit message"
Travis Delly
fuente
5
Esto prepara todos los archivos, no los confirma . Todavía tienes que hacerlo por separado.
Saeb Amini
8
  1. Primero debe agregar todos los archivos sin seguimiento. Utilice esta línea de comando:

    git add *

  2. Luego confíe usando esta línea de comando:

    git commit -a

Mohamad
fuente
7

Si tiene problemas con archivos sin seguimiento, este script de 3 líneas le ayudará.

git rm -r --cached .
git add -A
git commit -am 'fix'

Entonces solo git push

AliFurkan
fuente
Esto funciona para mí porque necesitaba eliminar el seguimiento de los archivos rastreados que ahora estoy ignorando.
hombre
2

Como sugiere el nombre, los 'archivos sin seguimiento' son los archivos que no están siendo rastreados por git. No están en su área de preparación y no formaron parte de ninguna confirmación anterior. Si desea que tengan una versión (o que sean administrados por git), puede hacerlo diciéndole a 'git' usando 'git add'. Consulte este capítulo Grabación de cambios en el repositorio en el libro Progit , que utiliza una imagen agradable para proporcionar una buena explicación sobre la grabación de cambios en el repositorio de git y también explica los términos 'con seguimiento' y 'sin seguimiento'

sateesh
fuente
0

Asegúrese de estar en el directorio correcto (carpeta principal del repositorio) en su git local para que pueda encontrar la configuración de la carpeta .git antes de confirmar o agregar archivos.

einarc
fuente
Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación. - De la crítica
sampathsris