Em algum momento (em torno das versões 1.6.x, eu acho), o git ficou ciente das mudanças dentro dos submódulos. Isso só serve para me irritar:
fornecedor de status $ git | grep modificado: # modificado: fornecedor / rails (conteúdo modificado)
Fornecedor do $ git diff / diff --git a / vendor / rails b / vendor / rails --- a / vendor / trilhos +++ b / fornecedor / trilhos @@ -1 +1 @@ Confirmação de sub-projeto 046c900df27994d454b7f906caa0e4226bb42b6f + Subprojeto de confirmação 046c900df27994d454b7f906caa0e4226bb42b6f-dirty
Por favor, faça parar?
Editar:
Ok, então eu tenho uma resposta. Agora eu tenho outra pergunta:
Posso colocar isso ~/.gitconfig
? Pela minha inicial, parece que não posso, e não vi nada promissor ao deslizar o patch. (Acho que ainda posso criar um alias.)
Respostas:
Existe ainda a possibilidade de definir o modo de ignorar para cada sub-módulo adicionado no arquivo .gitmodules.
Ainda hoje encontrei esse problema e escrevi imediatamente um artigo no meu blog sobre ele, depois de encontrar uma solução: Como ignorar alterações nos submódulos git
A essência disso:
Basta adicionar uma linha a esse
.gitmodules
arquivo:fonte
git status
funcionar como esperado. Além disso, você precisa de pelo menos 1.7.4 ou melhor, eu acredito..gitignore
arquivo, existe uma versão privada chamadaexclude
, localizada em.git/info/
, que não é manipulada. Existe um arquivo correspondente para o.gitmodules
arquivo, que permitirá suprimir alterações no submódulo apenas na sua instância do repositório pai, sem fazer alterações.gitmodules
?Existem dois tipos de avisos de alteração que você pode suprimir.
O primeiro é o
untracked content
que acontece quando você faz alterações no seu submódulo, mas ainda não as confirmou. O repositório pai os nota e osgit status
relata de acordo:modified: modules/media (untracked content)
Você pode suprimi-los com:
No entanto, depois de confirmar essas alterações, o repositório pai mais uma vez notará e as reportará de acordo:
Se você também deseja suprimi-las, precisa ignorar as
all
alteraçõesfonte
.gitignore
arquivo, existe uma versão privada chamadaexclude
, localizada em.git/info/
, que não é manipulada. Existe um arquivo correspondente para o.gitmodules
arquivo, que permitirá suprimir alterações no submódulo apenas na sua instância do repositório pai, sem fazer alterações.gitmodules
?ignore = all
parte é útil.Atualização: Veja (e vote ) a resposta de nilshaldenwang sobre a possibilidade de adicionar ao
.gitmodules
arquivo um parâmetro de configuração para ignorar o estado sujo de um determinado sub-módulo.Então o git 1.7.2 foi lançado e inclui a
--ignore-submodules
opção forstatus
.De
git help status
:O valor que eu quero é
dirty
.Eu uso um alias porque sou preguiçoso:
fonte
ignore=dirty
entradas individuais no.gitmodules
arquivo aqui.Como você mencionou, o submódulo do patch git: ignorar submódulos sujos para resumo e status está em construção.
Também anunciado no Git 1.7.2-rc2 :
Significado:
Considerar isso como uma opção não é exatamente o abordagem escolhida no momento :
"
git diff
" e "git status
" usarão esse valor de configuração para cada submódulo.O uso de "
--ignore-submodule
" substitui esse padrão (e o novo parâmetro "nenhum" será adicionado lá para substituir as configurações).Outra abordagem para tornar o status do git (ou qualquer comando git) para ignorar um sub-módulo específico está disponível no Git 2.13 (Q2 2017):
Veja mais em " Ignorar novas confirmações para o submódulo git ".
fonte
ignore = dirty
"Você também pode usar
para definir
submodule.ignore = dirty
em seu.git/config
arquivo.--global
irá definir o sinalizador de ignorar no seu~/.gitconfig
e aplicar a todos os seus repositórios. Sem ele, ele deve ser definido.git/config
apenas para o repo em que você está atualmente.A única documentação que posso encontrar sobre isso está
submodule.<name>.ignore
nos documentos do git-config . Mudei-o de um arquivo .gitmodules para o meu ~ / .gitconfig e ainda está funcionando para mim.fonte
Você precisa adicionar
para .gitmodules
fonte
Então o git v1.7.2-rc2 tem o que eu quero:
Construindo seu próprio howit do git:
fonte
git clone git://git.kernel.org/pub/scm/git/git.git git
.Eu respondi a essa pergunta aqui com mais detalhes.
Apenas corra
para adicionar uma opção de configuração local para ignorar essas alterações.
fonte
Você não pode querer adicionar
ignore = dirty
a.gitmodules
, você pode querer ser mais seletivo sobre as mudanças que queriam ignorar.Para fazer isso, adicione padrões a
.git/submodule_foo/bar/info/exclude
, ondesubmodule_foo/bar/
está o caminho do submódulo.Os padrões são semelhantes aos padrões aos quais você adicionaria
.gitignore
, com a raiz sendo o diretório do submódulo. Por exemplo, esse padrão ignora obuild
diretório no submódulosubmodule_foo/bar/
:fonte