Для исходного вопроса: Самый простой способ сделать это, вероятно, состоит в том, чтобы создать новую сиротскую ветвь, содержащую содержимое старой ветки:
git checkout commit_c #Checkout latest commit on your branch
git checkout --orphan new_branch_name
git commit
Написать разумное сообщение о коммитеопишите, что этот коммит является сквошем старой ветки.Если все выглядит хорошо, теперь вы можете переместить свой оригинальный указатель ветки на этот коммит:
git branch -f original_branch_name
Для обновленного вопроса:
Похоже, что вы ищетесквош-слияние:
git checkout master
git merge --squash TAI-18
Это примет все изменения, внесенные в ветку TAI-18
, и создаст коммит в главной ветке, который содержит все эти изменения.
Если те же файлы имеютЕсли вы обновлены одновременно в основной ветке, могут возникнуть конфликты, и вам придется их разрешать.