Git commit -a “arquivos não rastreados”?

92

Quando faço um git commit -a, vejo o seguinte:

  # 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/

O que esses arquivos não rastreados significam? Todas as mudanças foram de fato rastreadas. Eu não entendo porque o git está me avisando sobre arquivos não rastreados aqui.

EDITAR :

Ok, vejo muitas respostas confusas. Isso é o que acontece depois git commit -adisso.

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

Como você pode ver, não há NADA além desses quatro arquivos que tiveram as alterações aplicadas.

Minha pergunta deve ser reformulada da seguinte forma: Por que o git está me avisando sobre arquivos não rastreados quando todas as alterações neste commit foram rastreadas?

Em outras palavras, o aviso não rastreado na mensagem git commit é desnecessário ?

desaparecendo
fonte
1
(use "git add <file>..." to include in what will be committed)
Zengr
1
zengr que não é necessário porque git commit -a irá comprometer todas as mudanças nos arquivos que foram rastreados.
desaparecido em
3
Ela é necessária quando os arquivos nunca foram added até agora. Dos documentos para -a: Diga ao comando para preparar automaticamente os arquivos que foram modificados e excluídos, mas os novos arquivos sobre os quais você não informou ao git não são afetados .
Noufal Ibrahim
Por que você diz que o git está 'avisando' você? A meu ver, a mensagem de arquivos 'não rastreados' é informativa. Cabe a você verificar se esses arquivos precisam ser gerenciados e agir de acordo.
sábado
@sateesh Bem, como quiser chamá-lo, ainda não acho que isso seja realmente útil. Como isso é informativo? O que eu deveria fazer? Você leu minha postagem na seção "EDITAR" onde escrevi que não há modificação em nenhum outro arquivo, exceto nos listados acima? Se você achar isso informativo, é equivalente a eu dizer que qualquer pasta aleatória em sua árvore de repositório não será rastreada quando não houver nada com que se preocupar.
desaparecido em

Respostas:

105

Para outras pessoas com o mesmo problema, tente executar

git add . que irá adicionar todos os arquivos do diretório atual para rastrear (incluindo não rastreados) e então usar

git commit -a para confirmar todos os arquivos rastreados.

Como sugerido por @Pacerier, um liner que faz a mesma coisa é

git add -A

coding_idiot
fonte
4
git commit -airá confirmar todos os arquivos rastreados, não rastrear arquivos não rastreados. git add .rastreará arquivos não rastreados no diretório atual. git add -arastreará todos os arquivos não rastreados.
aqui
@matteo é git add -A, não git commit -A. Pelo que eu posso dizer, não há uma opção para a qual você possa passar git commitque inclua arquivos não rastreados.
Len
1
-a parece estar obsoleto apenas por A agora. Obrigado mesmo assim. :)
tcratius
Para mais informações sobre esses comandos, você pode verificar: stackoverflow.com/questions/572549/…
Onat Korucu
30

git commit -am "msg"não é o mesmo que git add fileegit commit -m "msg"

Se você tem alguns arquivos que nunca foram adicionados ao git tracking, você ainda precisa fazer git add file

O comando “git commit -a” é um atalho para um processo de duas etapas. Depois de modificar um arquivo que já é conhecido pelo repo, você ainda precisa dizer ao repo: “Ei! Quero adicionar isso aos arquivos de teste e, eventualmente, enviá-lo para você. ” Isso é feito emitindo o comando “git add”. “Git commit -a” está preparando o arquivo e enviando-o em uma etapa.

Fonte: "git commit -a" e "git add"

Zengr
fonte
mas, como você disse git commit -a = git add. + git commit por que não adicionaria automaticamente o arquivo à área de rastreamento ?? ....
Johnny
1
@Johnny: git commit -anão é igual a git add .+ git commit. A git addetapa adiciona apenas os arquivos listados como modificados em seu git status, não tudo no diretório atual.
Soren Bjornstad
Sim, descobri isso hoje!
KansaiRobot
9

Você deve digitar na linha de comando

git add --all

Isso irá confirmar todos os arquivos não rastreados

Editar:

Depois de preparar seus arquivos, eles estão prontos para confirmação, então seu próximo comando deve ser

git commit -am "Your commit message"
Travis Delly
fonte
5
Isso organiza todos os arquivos, não os confirma . Você ainda tem que fazer isso separadamente.
Saeb Amini
8
  1. Primeiro você precisa adicionar todos os arquivos não rastreados. Use esta linha de comando:

    git add *

  2. Em seguida, comprometa-se usando esta linha de comando:

    git commit -a

Mohamad
fonte
7

Se você estiver tendo problemas com arquivos não rastreados, este script de 3 linhas o ajudará.

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

Então só git push

AliFurkan
fonte
Isso funciona para mim porque eu precisava cancelar o rastreamento de arquivos rastreados que agora estou ignorando.
homem spyder
2

Como o nome sugere, 'arquivos não rastreados' são os arquivos que não estão sendo rastreados pelo git. Eles não estão em sua área de teste e não fizeram parte de nenhum commit anterior. Se você deseja que eles tenham controle de versão (ou sejam gerenciados pelo git), você pode fazer isso dizendo ao 'git' usando 'git add'. Verifique este capítulo Gravando Mudanças no Repositório no livro Progit , que usa um visual agradável para fornecer uma boa explicação sobre como gravar mudanças no repo do git e também explicar os termos 'rastreado' e 'não rastreado'

sateesh
fonte
0

Certifique-se de que você está no diretório correto (pasta principal do repositório) em seu git local para que ele possa encontrar a configuração da pasta .git antes de confirmar ou adicionar arquivos.

Einarc
fonte
Isso não fornece uma resposta para a pergunta. Para criticar ou solicitar esclarecimentos de um autor, deixe um comentário abaixo de sua postagem. - Da avaliação
sampathsris