Estou curioso para saber qual é a melhor prática predominante. As confirmações do git devem ser aplicadas de forma que o projeto esteja em um estado de funcionamento (é compilado corretamente, todos os testes são aprovados etc.) ou está comprometendo o código quebrado OK?
Por exemplo, se você renunciar a esse requisito, poderá ser mais flexível com confirmações (use-as como partes lógicas, mesmo que o aplicativo não esteja em um estado de funcionamento etc). No entanto, se você aplicá-lo, ganha a flexibilidade de poder escolher qualquer commit posteriormente mais tarde ...