não pode adicionar pasta no git


21

Eu adicionei uma nova pasta (na verdade, eu a clonei de outro repositório e esqueci), depois fiz algumas alterações lá. Além disso, fiz muitas alterações em outros lugares, quando tentei fazer o 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 me lembro que talvez houvesse uma pasta .git (porque antes eu git clonei lá). Eu fui para essa pasta e removi os arquivos não necessários (pastas) e a pasta .git também. Eu verifiquei o status do git, nada de estranho. Em seguida, confirme e efetue o checkout em outro ramo e, de repente, descobri que essa pasta não foi adicionada à última confirmação. Na verdade, a pasta foi adicionada, mas os arquivos foram ignorados. Agora, mesmo quando estou tentando fazer git addpor essa pasta, nada está git statusacontecendo e não mostra nenhuma alteração :(

O que eu posso fazer ?


6
Caso outra pessoa acabe nesta página com o problema que enfrentei: não consegui adicionar arquivos em uma subpasta ao Git. Mais tarde, descobri que essa subpasta tinha seu próprio .gitrepositório e os arquivos estavam sendo adicionados a esse repositório, em vez do repositório na pasta principal. Mesmo na GUI do Git, essa subpasta apareceu como um arquivo e não como uma pasta.
Nav

Respostas:


29

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

Parece que você pode ter um padrão de ignorância que está causando addnada. Você pode ver arquivos ignorados com git status --ignored; eles podem ser rastreados comgit add --force protected/ext/SpecificFolder


11
Não, não é presen em git status --ignored, de alguma forma eu estou pensando que está conectado com submodule
user1016265

11
Este comando foi um salva-vidas. Sem ele, eu nunca teria descoberto qual diretório foi ignorado.
IgorGanapolsky

wow ..... eu senti totalmente estúpido lendo este fato depois de usar git já há algum tempo ^^
XandruCea

11
Aha, finalmente. Esse foi o meu problema. Eu tinha copiado .gitignore do pai e para os submódulos. Eu estava ignorando 'config /' e mais tarde criei um diretório no diretório de origem chamado config. Não foi possível adicionar o cource. Problema resolvido agora obrigado :-)
Avec

7

O Git não rastreia diretórios VAZIOS. Se você possui um projeto com várias camadas de subdiretórios, o git realmente rastreia os diretórios com os arquivos neles. Caso contrário, seria um repositório simples de arquivos.


Uau, isso é uma coisa tão simples, mas caramba. Eu li isso e falei "oh meu Deus, é exatamente isso"
Brian diz Reinstate Monica

3

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

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

Para resolver essa questão, excluí a .gitpasta da pasta, movi-a para outro diretório, limpei o índice, removi o diretório onde estava no meu repositório e, em seguida, pude adicionar o diretório corretamente.

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


5
Também pode ser corrigido executandogit rm --cached path_to_submodule
Victor Marchuk 15/01


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

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


0

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

Adicionar novamente a pasta que estava tentando converter parecia funcionar, mas acontece que os arquivos dentro dela não foram realmente 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'
  • portanto, estava relacionado à maneira como eu tentara remover manualmente o submódulo antigo, pois não havia um processo bem documentado para fazê-lo corretamente. - Acabei de excluí-lo do .gitmodules. Outras coisas eram realmente necessárias para desviar as sombras do submódulo.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.