não pode adicionar pasta no git

16

Eu adiciono uma nova pasta (na verdade eu o copiei de outro repositório e esqueci disso), então fiz algumas alterações lá. Adicionalmente eu fiz muitas mudanças em outros lugares, quando tentei fazer git add

# 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)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   protected/ext/SpecificFolder (modified content)
#

Então eu lembro que talvez houvesse pasta .git (porque antes eu git clonava lá). Eu fui para essa pasta e remover arquivos não necessários (pastas) e pasta .git também. Eu verifiquei o status do git, nada de estranho. Em seguida, confirme e efetue o checkout para outra ramificação e, de repente, descubro que essa pasta não foi adicionada ao último commit. Na verdade, a pasta foi adicionada, mas os arquivos dentro dela foram ignorados. Agora, mesmo quando estou tentando fazer git add para essa pasta, nada acontece e git status não mostra nenhuma alteração: (

O que posso fazer?

    
por user1016265 16.04.2013 / 20:24

6 respostas

23

O Git não rastreia diretórios; mas apenas os arquivos dentro deles.

Parece que você pode ter um padrão de ignorar que está causando add para não fazer nada. Você pode ver arquivos ignorados com git status --ignored ; eles podem então ser rastreados com git add --force protected/ext/SpecificFolder

    
por 16.04.2013 / 20:34
6

O Git não rastreia diretórios EMPTY. Se você tem um projeto com várias camadas de subdiretórios, o git de fato rastreia os diretórios com arquivos neles. Se não, então seria um repositório plano de arquivos.

    
por 09.05.2015 / 01:18
3

Por acaso fiz exatamente o que esse usuário fez: Adicionar um repositório git existente dentro de outro.

O sintoma era que o git reconhecia esse diretório como um arquivo e, portanto, não conseguia adicionar os arquivos do diretório.

Para resolver essa questão, apaguei a pasta .git da pasta, movi a pasta em outro diretório, limpei o índice, removi o diretório onde estava o meu repositório e, em seguida, consegui adicionar o diretório corretamente. / p>

A moral disso é: não adicione um repositório dentro de outro.

    
por 07.10.2015 / 13:34
2

Há uma resposta melhor aqui: .gitkeep usage

TL; DR, adicione um arquivo .gitkeep ao seu diretório vazio

    
por 15.06.2018 / 17:42
0

Tente adicionar um arquivo nesse diretório.

$ git add my-dir/index.html

Se você vir uma saída como a abaixo:

The following paths are ignored by one of your .gitignore files:
my-dir/index.html
Use -f if you really want to add them.
fatal: no files added

Há uma regra em um dos seus gitignores que impede você de adicionar esse diretório.

    
por 28.07.2017 / 08:17
0

Encontrei efeitos colaterais semelhantes depois de tentar converter o que costumava ser um submódulo em uma subpasta normal.

A adição da pasta que eu estava tentando converter pareceu funcionar, mas acontece que os arquivos nela não foram adicionados.

Tentar adicionar especificamente um arquivo dentro dele me deu um aviso melhor

git add sites/all/modules/contrib/transclusion/transclusion.module 
fatal: Pathspec 'sites/all/modules/contrib/transclusion/transclusion.module' is in submodule 'sites/all/modules/contrib/transclusion'
  • por isso estava relacionado à maneira como eu tinha manualmente tentado remover o antigo submódulo, pois não havia um processo bem documentado para fazê-lo corretamente. - Eu acabei de deletar de .gitmodules. Outras coisas foram realmente necessárias para eratizar as sombras do submódulo.
por 03.08.2017 / 02:40

Tags