Obter `git commit -a` para ignorar submódulos?

Obter `git commit -a` para ignorar submódulos?

O comportamento de git commit -aparece ser incluir alterações nos submódulos, caso eles tenham novos commits dentro deles. Isso não é o que eu normalmente quero, e às vezes me pego pressionando acidentalmente um commit com alterações de submódulo que não pretendia incluir.

Existe uma maneira de definir git commit -apara ignorar submódulos? Dei uma olhada git help confige não vi nada.

Uma alternativa (menos boa) poderia ser deixar git statusmais claro se git commit -aincluiria um submódulo. Atualmente ele mostra

modified:   submodule (modified content)

ou

modified:   submodule (new commits)

e esses são irritantemente semelhantes. Parece que a submodule.<name>.ignoreopção de configuração pode fazer algo parecido com o que eu quero. Mas, idealmente, eu ainda gostaria de ver alterações nos submódulos, mas não no mesmo lugar que todas as minhas outras alterações, a menos que git commit -aas adicionemos.

Responder1

Você pode definir submodule.ignore na configuração do git ou no arquivo .gitmodules.

NOTA: O GIT é meio estúpido com isso. Se você definir ignore = all, para obter um comportamento sensato com git commit -a, ele TAMBÉM ignorará o submódulo em git show/diff quando você os adicionar EXPLICITAMENTE. A única maneira de contornar o último é usando a opção de linha de comando --ignore-submodule=none.

NOTA2: A configuração diff.ignoreSubmodules deve ser capaz de definir a opção de linha de comando padrão --ignore-submodule, mas está quebrada há anos e não faz nada, pois .gitmodules vence o concurso, portanto, apenas opções explícitas de linha de comando serão obtidas seu comportamento são.

Responder2

Se você não tem muitos submódulos, o que achei mais conveniente é primeiro submeter todos e depois executar

git reset HEAD^1 submodule_path

Você sempre pode obter um lembrete desta sintaxe de comando se executar git commit --amend sem qualquer alteração. Ele aparecerá próximo ao topo das instruções comentadas.

informação relacionada