Здравствуйте!
В общем сразу к вопросу. Имею локальный git репозиторий, захотел немного изменить сообщения некоторых коммитов, выполнил git checkout hash или git checkout HEAD~number потом git commit --amend и отредактировал сообщение коммита, при просмотре логов изменения применились, но как только возвращаюсь в мастер ветку изменения пропадают и отображаются старые коммиты со старыми хэшами и сообщениями.
Как правильно сделать изменения предыдущих коммитов?
Алексей Тен: Спасибо, но нельзя ли сделать это как-то не с конца ветки, rebase'ом это слишком далеко.
Кстати он также не сохраняет изменения если делать их не с конца ветки, этот способ уже применял для обьединения коммитов.
Есть ли альтернатива?
Алексей Тен: Плохо смотрел, спасибо за ссылку, оказывается с edit при rebase можно свободно редактировать выбранные коммиты и главное это написано и при самом rebase.
Спасибо!!!
Можно сделать новую ветку начиная с того коммита, в котором вам нужно поменять сообщение. Сделать в новой ветке commit --amend, потом сделать cherry-pick коммитов которые должны остаться нетронутыми и потом повторить. В конце надо сделать новую ветку мастером. Но это практически тоже самое что вы делаете с rebase -i HEAD~ (это не с конца ветки, а только с нужного коммита).
Спасибо! Интересное решение, но немного громоздкое, выше мне уже дали ссылку и досмотрев ее внимательно нашел удобное решение используя git rebase -i HEAD~10 и пометив нужные коммиты для редактирования как edit, а после git commit --amend и git rebase --continue и так до конца помеченных коммитов.