Não consigo me livrar do conteúdo não rastreado nos submódulos do Git. git status
Rendimentos em execução :
# No mestre da filial # Alterações não preparadas para confirmação: # (use "git add ..." para atualizar o que será confirmado) # (use "git checkout - ..." para descartar alterações no diretório de trabalho) # (confirmar ou descartar o conteúdo não rastreado ou modificado nos submódulos) # # modificado: pacote / snipmate (conteúdo não rastreado) # modificado: pacote / surround (conteúdo não rastreado) # modificado: pacote / espaço em branco à direita (conteúdo não rastreado) # modificado: pacote / zencoding (conteúdo não rastreado) # nenhuma alteração adicionada ao commit (use "git add" e / ou "git commit -a")
A adição do --ignore-submodules
parâmetro oculta essas mensagens; mas me pergunto se existe uma maneira de se livrar dessa sujeira de uma maneira mais adequada e essencial.
git
git-submodules
Tomer Lichtash
fonte
fonte
Respostas:
Como o status do git relata conteúdo não rastreado, a maneira real de ter um status limpo seria entrar em cada um desses submódulos e:
.gitignore
específico para cada módulo..git/info/exclude
, como o peci1 relata nos comentários .ou adicionar sujo com a especificação submódulo, como mencionado em ezraspectre de resposta (upvoted).
ou adicione um global
.gitignore
arquivo (geralmente~/.gitignore-global
). Como por exemplo.DS_Store
ou no meu caso,Carthage/Build
como relatado por Marián Černý nos comentários . Veja a.gitginore
página de manual :fonte
.DS_Store
arquivo havia sido criado automaticamente (pelo OS X) em um dos meus submódulos, impedindo-me de comprometer o projeto principal. Arg! Hora de atualizar.gitignore
....git/info/exclude
e adicione as linhas de ignorar (ele funciona como um .gitignore, mas não faz parte do repositório compartilhado).Eu encontrei este post para trabalhar em geral. Adicionando a
ignore = dirty
opção a cada uma das entradas no.gitmodules
arquivo.fonte
ignore = untracked
também existe e mostra arquivos rastreados modificados, mas não arquivos não rastreados. Seria bom se houvesse uma configuração global para isso para todos os submódulos ...Você também pode ir para cada diretório do submódulo e atuar como um git separado. Por exemplo:
... / obtém a lista de arquivos modificados /
você também pode atualizar seu repositório de submódulo remoto com
depois de tudo
fonte
git add .
sem revisar os arquivos modificados. Na maioria das vezes, as alterações feitas são os.DS_Store
arquivos adicionados - isso provavelmente deve ser detectado pelo seu.gitignore
, como zourtney mencionou no primeiro comentário à resposta.git submodule update --force
.Pode ser devido à
detached HEAD
ramificação do seu submódulo. Se for esse o caso, entre no caminho do submódulo (por exemplo:)./bundle/snipmate
e executegit checkout master
.fonte
Ontem fiquei preso nessa questão, em um projeto que tinha quase 12 submódulos.
git status
estava mostrando a saída.Para resolver o erro de conteúdo untracked, eu tive que remover os arquivos untracked de todos os sub-módulos (todos eram
*.pyc
,*.pyo
arquivos gerados por python) usando um.gitignore
.Para resolver o outro, tive que executar o
git submodule update
que atualizou cada um dos submódulos.fonte
Na minha situação, clono módulos como ponto de partida para um novo módulo no meu ambiente ZF2. O que isso faz é colocar sua própria pasta .git no diretório
A solução nesse caso é excluir a pasta .git (você provavelmente precisará mostrar os arquivos ocultos para visualizá-la).
fonte
Isso provavelmente acontece quando você tem outro .git [pasta oculta] dentro da pasta específica.
modificado: ./../ .. (conteúdo modificado, conteúdo não rastreado)
verifique se o subdiretório não contém essa pasta .git.
Se for esse o caso, o problema pode ser resolvido excluindo a pasta .git manualmente do subdiretório.
fonte
Eu prefiro usar o SourceTree , a solução para mim foi abrir o repositório do submódulo no SourceTree, que me mostra uma lista de todos os arquivos não rastreados. Em seguida, agrupei os selecionados e usei "Remover".
Consegui fazer isso porque sabia que todos os arquivos não rastreados não eram realmente necessários.
fonte
Isso funcionou muito bem para mim:
Se não funcionar com o
pathname
, tente o nome do arquivo. Deixe-me saber se isso funcionou para você também.fonte
Se esse for um problema temporário, você poderá ir para a pasta do submódulo e executar,
git reset HEAD --hard
mas perderá todas as alterações dentro do submódulo.fonte