Заметил, что количество моих коммитов сильно превышает количество коммитов других людей в схожих проектах (на один не самый сложный проект на свете ушло больше 300). Это, конечно, не является моей основной проблемой в жизни, но у меня сложилось впечатление, что я делаю что-то не так, и это может затруднить копание в истории проекта. Я делаю коммит каждый раз, когда в проект добавляется новая фича, и он после этого приходит в работоспособное состояние, причем неважно, какого размера фича - простое выправление грамматики, багфикс, внедрение какого-то нового функционала (последнее может быть разбито и на несколько коммитов, но после каждого из них проект должен быть работоспособным), причем если я поправил css, сменил отвратительно кривой текст на просто кривой и пересобрал в контроллере экшен - это, по моей философии, должны быть три коммита, потому что они затрагивают разные невзаимосвязанные части проекта. В результате, с одной стороны, я могу получить чуть ли не любой слепок проекта и он в любой момент будет работоспособен, с другой - я получаю ворох коммитов типа 'Typo fix', 'CSS fix', 'Microfix', которые, наверное, могли бы и не существовать. Короче, как правильно делать? p.s. Одна из вероятных причин ситуации - то, что бранчингом почти не пользуюсь. Сам дурак, знаю. upd. Если точнее сформулировать вопрос - должны ли вводимые фичи быть атомарными (один коммит - одна фича или багфикс), или на это можно наплевать?
Ответ
По коммитам у меня такие правила: Коммит должен компилироваться без ошибок. Коммит должен обозначать как минимум новую фичу/класс/метод/багфикс. Или хотя бы коммит должен обозначать конец рабочего дня. Коммит не должен задерживать остальных членов команды, ибо merge - это зло (иногда необходимое). Из чего следует, что если я занимаюсь прожектом, то как минимум 1 коммит в день я должен делать. Терпеть не могу коммиты, когда изменения копятся-копятся, потом бабах - глобальный коммит с тучей конфликтов merge. С другой стороны, больше 2-3 коммитов в день - это излишне, ну разве что по просьбе сотоварищей. Update для фанатов git: в данном контексте коммит имеется ввиду не коммит в локальную репу, а гитовский push в глобальную репу.
Комментариев нет:
Отправить комментарий