Как не совершать никаких изменений и новое сообщение?

Как создать новый commit и создать новое сообщение, если никакие изменения не будут внесены в файлы?

Это невозможно, так как код фиксации (SHA?) будет таким же?

Ответ 1

Редко для этого есть хорошая причина, но параметр --allow-empty для пустых --allow-empty-message, в отличие от --allow-empty-message для пустых сообщений. Вы также можете узнать больше, набрав git help commit или посетив онлайн-документацию.

Хотя объект дерева (который имеет собственный хеш) будет идентичен, коммит будет фактически иметь другой хеш, потому что он, вероятно, будет иметь другую временную метку и сообщение и определенно будет иметь другой родительский коммит. Все три из этих факторов интегрированы в алгоритм хеширования объектов git.


Есть несколько причин, по которым вам может потребоваться пустой коммит (включая некоторые комментарии):

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

Другие стратегии добавления метаданных в дерево коммитов включают в себя:

  • Отдельные ветки или легкие теги, которые всегда указывают на фиксацию определенного статуса (например, "последний принятый коммит" или "текущий промежуточный коммит").
  • Аннотированные теги для записи меток времени, коммиттера и сообщения, указывающих на существующий коммит без добавления записи в само дерево коммитов.
  • git notes чтобы связать изменяемую заметку поверх существующего неизменяемого коммита.

Ответ 2

Если я правильно понял, вы хотите сделать пустую фиксацию. В этом случае вам нужно:

git commit --allow-empty

Ответ 3

Пустое сообщение с сообщением

git commit --allow-empty -m "Empty test commit"

Пустая фиксация с пустым сообщением

git commit --allow-empty --allow-empty-message

Ответ 4

Возможно, в качестве более разумной альтернативы, вы можете создать аннотированный тег (именованный коммит с сообщением). Смотрите опцию git tag -a.

Ответ 5

Если вы используете такую ​​систему, как gitversion, это имеет смысл сделать такой тип фиксации. У вас может быть фиксация, которая специально предназначена для перебора основной версии с помощью комментария + semver: major.