Можно ли как-нибудь добавить изменения в ветку Git из другой ветки, но без истории? И стоит ли это делать?
У меня есть dev-ветка, в которой у коммитов могут быть не очень понятные комментарии. И есть prod-ветка.
Я хочу разрабатывать в dev-ветке, не акцентируя внимания на комментариях коммитов. А потом сделать всего один коммит в prod с понятным комментарием, где будут все изменения dev-ветки. И пушить prod на GitHub, например. Или в другой внешний Git-репозиторий (если работаю в команде).
Не выставлять же напоказ всем все свои коммиты (и их комментарии). Даже такие, которые были сделаны перед каким-либо сомнительным действием, например, массовым переименованием функции (я делаю коммит, чтобы можно было легко отменить переименование, если что-то пошло не так) и т. д.
Можно ли такое сделать в Git? И стоит ли оно того или из-за этого будут какие-то сложности?
Да, можно. В GitHub это называется Merge методом Squash.
git switch prod
git merge --squash dev
git commit
По факту операция склеивает все коммиты вашей тематической ветки в один и делается cherry-pick полученного коммита в prod. Поэтому после вам желательно удалить тематическую ветку, так как она станет неактуальной. Ну либо просто начать новую от актуального prod. Если продолжить работать в старой цепочке коммитов, то вы можете словить неприятные глюки в дальнейшем.