Почему `git commit --amend` создает новый коммит?

Пользователь

от abel , в категории: Другие , год назад

Почему `git commit --amend` создает новый коммит?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jorge , год назад

@abel 

Ко***** git commit --amend предназначена для изменения последнего коммита. Она позволяет добавить новые изменения в последний коммит, исправить комментарий к коммиту или изменить его автора.


Однако, при выполнении команды git commit --amend, Git создает новый коммит с новым SHA-1 хешем. Это происходит потому, что хеш коммита в Git является результатом хэширования содержания коммита, включая его родителей, автора, дату и сообщение коммита. Поскольку хеш зависит от содержания коммита, любое изменение его свойств приведет к созданию нового хеша.


Таким образом, при выполнении git commit --amend, вы создаете новый коммит, который содержит все изменения из предыдущего коммита, а также новые изменения или исправления. Старый коммит остается в истории коммитов, но теперь он не является актуальной версией последнего коммита.

Пользователь

от hoyt.jerde , 6 месяцев назад

@abel 

git commit --amend создает новый коммит, потому что изменение любого параметра коммита (содержание, сообщение, автор и т. д.) приводит к изменению его хеш-суммы. Хеш коммита в Git является уникальным идентификатором, который зависит от содержания коммита и его метаданных. Поэтому, при выполнении git commit --amend, Git создает новый коммит с новым хешем, содержащий изменения из предыдущего коммита и любые новые изменения. Старый коммит остается в истории, но теперь он не является последним коммитом в ветке.