Имя моего релиза зависит от commit=$(git rev-parse --short HEAD)
, и я хочу поместить файл релиза в мой репозиторий git. Когда кто-то поправляет фиксацию, изменилось $commit
, можно ли повторно использовать $commit
после git commit --amend
?Git: Как повторно использовать фиксацию rev через commit --amend?
ответ
Нет, это невозможно.
Вот некоторые из вещей, которые идут в SHA-1, значение, возвращаемое git rev-parse --short
и что заставит ша-1 для изменения:
- Имени автора
- Даты совершения
- сообщение коммита
- Список родителей
и, самое главное
- sha-1 всех файлов и каталогов в репозитории. Добавление даже символа пробела в один из файлов сделает невозможным повторение одного и того же ша-1.
git commit --amend --no-edit
это сохранить сообщение фиксации (если это то, что вы хотите)
Нет, это не возможно.
Это связано с тем, как Git работает на фундаментальном уровне. Каждый коммит в Git и почти все еще в Git - это двоичный объект, называемый blob.
Некоторые капли - это особые изменения файлов, которые вы храните; эти капли не зависят от всех других блоков. Некоторые капли, однако, относятся к другим блокам. Ключ, используемый для обозначения другого blob, - это хэш-файл sha-1 самого блоба. Объект фиксации рекурсивно ссылается на его родительскую запись (по их хэшам) и всем объектам, содержащим состояние репозитория для , которое совершает. Бит фиксации также содержит метаданные, включая метку времени и сообщение фиксации.
Поэтому, когда вы изменяете сообщение фиксации для фиксации, вы меняете содержимое blob, поэтому sha-1 отличается. Как и любой алгоритм хеширования, выход sha-1 составляет очень, даже для небольших изменений (это значительная часть точки алгоритма хэширования).
Невозможно избежать этого. Blobs ссылаются на sha-1 их содержимого; сообщение фиксации - это blob; commit-blob должен каким-то образом содержать информацию фиксации, включая сообщение фиксации.
- 1. Отмена git commit --amend
- 2. git commit --amend опасен
- 3. Как прервать 'git commit --amend'?
- 4. Git commit --amend merged two commits
- 5. Git небыстрая перемотка вперед после git commit --amend
- 6. Как нажать на репо после выполнения 'git commit --amend'
- 7. "git commit --amend -c <commit>" не сохраняет изменения
- 8. Mercurial: откат «hg commit -amend».
- 9. git commit --amend без запроса сообщения
- 10. Как исправить git commit --amend на голове удаленной ветки?
- 11. Есть ли эквивалент Bazaar для `git commit -amend`?
- 12. как взломать сообщение git commit через python?
- 13. Прочитать последнюю фиксацию номера git и commit
- 14. Как подтвердить изменения после `git commit -amend` в Terminal?
- 15. Почему я не могу использовать comand «git commit -amend» и нажимать на github
- 16. Что происходит со старыми коммитами после использования `git commit -amend`?
- 17. Как настроить yocto использовать последнюю git-фиксацию?
- 18. Как git совершает работу -amend, точно?
- 19. Git --amend в Затмении JAVA
- 20. Как перенести фиксацию через фиксацию слияния?
- 21. Git: как повторно использовать/сохранять сообщения фиксации после сброса git?
- 22. Exclude Preceding Commit> line from git rev-list format
- 23. Git: как расплавить фиксацию другой фиксации?
- 24. Git revert lastet commit
- 25. Как мне отменить плохой фиксатор --amend?
- 26. Изменить фиксацию в Fossil
- 27. Перехват «git commit -a (m)»
- 28. Изменить автора git commit, который уже объединен
- 29. как завершить git commit?
- 30. SVN commit vs Git commit
Stackoverflow не любит ответы на простые вопросы: № – jthill
@jthill: Нельзя ли повторно использовать? – coanor
Это то, как создаются идентификаторы commit: у другого контента разные идентификаторы. – jthill