![Obter `git commit -a` para ignorar submódulos?](https://rvso.com/image/1555364/Obter%20%60git%20commit%20-a%60%20para%20ignorar%20subm%C3%B3dulos%3F.png)
O comportamento de git commit -a
parece 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 -a
para ignorar submódulos? Dei uma olhada git help config
e não vi nada.
Uma alternativa (menos boa) poderia ser deixar git status
mais claro se git commit -a
incluiria 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>.ignore
opçã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 -a
as 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.