#git #github
Есть репозиторий: https://github.com/w3lifer/yii2-i18n-js. Нужно было сделать amend сообщения последнего коммита, чтобы тот ссылался на соответствующее Issue: git commit -m 'closes #1: ...' --amend git push -f git tag -d 2.1.1 git push origin :refs/tags/2.1.1 git tag 2.1.1 git push --tags Соответственно, автоматически закрылся Issue #1; но как оказалось, я ошибся в номере — нужно было указать номер #2. Тогда я повторил процедуру, но уже с верным номером: git commit -m 'closes #2: ...' --amend git push -f git tag -d 2.1.1 git push origin :refs/tags/2.1.1 git tag 2.1.1 git push --tags Я ожидал, что ссылка в Issue #1 исчезнет и он откроется автоматически, но этого не произошло: там она осталась и указывает на коммит closes #1: .... Из всего этого у меня возникло несколько вопросов. Разве коммит closes #1: ... не должен был исчезнуть? Почему его нигде не видно: ни в git log, ни через gitk, ни через IDE, однако можно сделать его checkout? Как его можно удалить из Issue #1? Насчёт третьего вопроса: пробовал, если просто сослаться на Issue без ключевых слов для закрытия, а потом удалить ссылку из сообщения, то в Issue ссылка исчезает. https://github.com/isaacs/github/issues/1081 https://stackoverflow.com/q/21983964/4223982
Ответы
Ответ 1
Git не удаляет коммиты и не перезаписывает их. Когда пользователь делает git commit --amend, создается новый коммит, а старый становится невидим, если не привязать его к какой-нибудь ветке. Если вы знаете хэш коммита, то на него можно переключиться командой git checkout 5ccd263b4 (где 5ccd263b4 - ваш хэш). Гитхаб адресует коммиты по хэшу (это хорошо заметно в ссылке, что вы предоставили), потому и отображает ссылку корректно. Плюс к сказанному: у гитхаба скорее всего нет никакой процедуры отслеживания переписывания истории, т.к. сам факт переписывания истории в публичном репозитории является плохой практикой.
Комментариев нет:
Отправить комментарий