Как сделать полную копию одной ветки в другую git?
Такая ситуация:
Есть ветка продакшена
Есть ветка редизайна
Есть ветка мастера
Я работаю в ветке редизайна и по мере выполнение работы мерджу ее с продом - проблем нет
Сейчас заказчик решил что мерджить нужно в мастер - там дев сервер, там все изменения проверяются и потом заливаются на прод - все логично.
Проблема в том, что мастер это какая-то очень старая версия проекта, там куча всего лишнего и ненужного, ну и наоборот, там нет многого что щас есть на проде
Я пробую мерджить свою ветку редизайна в ветку мастера, фикшу конфилкты и все ок, но в мастере получается старючая версия проекта + мои изменения. Мне же нужно перетереть все начисто, то есть все мои файлы нужно полностью перенести на мастер, сам мастер не должен оставить после себя никаких файлов. Как это можно сделать подскажите пожалуйста?
Ответы (1 шт):
если не важно, что будет в истории данного указателя (ветки и метки в программе git — это указатели), то можно просто перезаписать все файлы:
переключаетесь на указатель, который надо переделать:
$ git checkout указатель1удаляете все файлы и каталоги кроме каталога
.git:$ find . -mindepth 1 -maxdepth 1 \! -name .git -print0 | xargs -0 rm -rраспаковываете файлы, взяв их по нужному вам указателю:
$ git archive указатель2 | tar -xдобавляете в индекс всё содержимое текущего каталога:
$ git add .делаете коммит:
$ git commit
если же важно, чтобы история коммитов, доступных по указателю1, в точности соответствовала доступным по указателю2, то можно переименовать указатель1 и создать заново из указателя2:
переименовать указатель1 в другое_имя:
$ git branch -m указатель1 другое_имяпереключиться на указатель2:
$ git checkout указатель2создать заново указатель1:
$ git checkout -b указатель1так как вы упомянули о совместной разработке, то теперь ещё потребуется перезаписать историю, доступную по указателю1 в общем хранилище (допустим,
origin):$ git push -f -u origin указатель1как и при любом переписывании истории в совместно используемом хранилище, будьте готовы к дополнительным организационным действиям (см. пункты 3 и 4 из другого моего ответа).