Задать вопрос
@aguz
Client-side developer

Как в команде работать с историе git ?

Есть команды. Есть командный github. Есть готовый pull request в общий mainline. Но некоторые коммиты не соотвествуют командной договоренности.
Тоесть глубоко в истории есть несколько коммитов, которым:
  • нужно поправить автора коммита
  • нужно поправить commit message


Как это сделать, не ломая работу другим командам, своей команде?
  • Вопрос задан
  • 2340 просмотров
Подписаться 4 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@DancingOnWater
Момент номер 1.
Хэшкод коммита считается с учетом текста коммита и реквезитов автора и хэшкоды предыдущего. Отсюда вывод, что их изменить без изменения всего древа коммитов пулреквесте нельзя.

Выход тут только один - ребейзить вашу ветку со всеми вытекающими и повторно отправлять.
Ответ написан
@Power
Если вы делали мёрджи из mainline в свою ветку и все они проходили без конфликтов, то вашу задачу решит
git rebase --interactive --preserve-merges ...
(только не переупорядочивайте коммиты - см. BUGS).
Если же были конфликты, да и вообще правильнее, делать git filter-branch, например:
git filter-branch --env-filter 'export GIT_AUTHOR_NAME="New Author Name"' --msg-filter 'if [ "$GIT_COMMIT" = "339167af5c274dedd5efcf93f83f4bfc4acb9eba" ]; then echo "new commit message"; else cat; fi' -- mainline_branch_name..your_branch_name
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы