Ответ 1
Редко для этого есть хорошая причина, но параметр --allow-empty
для пустых --allow-empty-message
, в отличие от --allow-empty-message
для пустых сообщений. Вы также можете узнать больше, набрав git help commit
или посетив онлайн-документацию.
Хотя объект дерева (который имеет собственный хеш) будет идентичен, коммит будет фактически иметь другой хеш, потому что он, вероятно, будет иметь другую временную метку и сообщение и определенно будет иметь другой родительский коммит. Все три из этих факторов интегрированы в алгоритм хеширования объектов git
.
Есть несколько причин, по которым вам может потребоваться пустой коммит (включая некоторые комментарии):
- В качестве "декларативного коммита" - добавить повествование или документацию (через DavidNeiss), включая фактические данные о прохождении тестов или lint (через Роберта Балицкого).
- Тестировать команды
git
без генерации произвольных изменений (через Vaelus). - Для воссоздания удаленного голого репозитория используется
gitolite
(через Tatsh). - Произвольно создать новый коммит, например, для повторного запуска инструментов сборки (через mattLummus) или ради личной регистрации или метрик (через DynamiteReed). Однако подумайте дважды: в зависимости от вашей структуры ветвления/слияния, коммиты могут жить очень долго, поэтому стратегия "просто ничего не коммитить" может непреднамеренно загрязнить репозиторий вашей команды временными артефактами рабочего процесса и затруднить отделение ревизий кода от эфемерный беспорядок.
Другие стратегии добавления метаданных в дерево коммитов включают в себя:
- Отдельные ветки или легкие теги, которые всегда указывают на фиксацию определенного статуса (например, "последний принятый коммит" или "текущий промежуточный коммит").
- Аннотированные теги для записи меток времени, коммиттера и сообщения, указывающих на существующий коммит без добавления записи в само дерево коммитов.
-
git notes
чтобы связать изменяемую заметку поверх существующего неизменяемого коммита.