Ответы:
Для этого редко есть веская причина, но параметр предназначен --allow-emptyдля пустых коммитов (файлы не изменяются), в отличие от --allow-empty-messageпустых сообщений о фиксации. Вы также можете узнать больше, набрав git help commitили посетив онлайн-документацию .
Хотя объект дерева (имеющий собственный хэш) будет идентичным, фиксация фактически будет иметь другой хеш, потому что предположительно будет иметь другую метку времени и сообщение, и определенно будет иметь другую родительскую фиксацию. Все три фактора интегрированы в gitалгоритм хеширования объектов.
Там являются несколько причин , вы можете совершить пустой ( с учетом некоторых замечаний):
gitкоманд без генерации произвольных изменений (через Vaelus ).gitolite(через Tatsh ).Другие стратегии добавления метаданных в дерево фиксации включают:
git notes чтобы связать изменяемую заметку поверх существующей неизменной фиксации.commit --amendесли удаленный компьютер не разрешает принудительное нажатие. Таким образом, вы можете позволить разработчикам увидеть важное сообщение, связанное с предыдущей фиксацией.
Если вы используете такую систему, как gitversion, имеет смысл делать такого рода фиксацию. У вас может быть коммит, специально предназначенный для изменения основной версии с помощью комментария + semver: major.
Возможно, в качестве более разумной альтернативы вы могли бы создать аннотированный тег (именованный коммит с сообщением). Смотрите git tag -aвариант.
devформу ветки,masterа затемfeatсразу же ветвьdev,featветвь выглядит как исходящая изmasterветки, так как нет отличительной фиксации вdevветке, из которойfeatпроисходит ветка. Пустая фиксация при первом созданииdevветки помогает установитьdevветвь как собственную бессрочно существующую ветвь, независимую отmaster. Обычно это полезно, когда вы используете ветки как слои и создаете два слоя из одного коммита