6

Ситуация такая: была ветка master. В какой-то момент от нее отделилась ветка new_feature. Потом основная разработка велась в этой новой ветке, а в ветке master проводился только багфикс и добавление маленьких фич. В конечном итоге, в ветке new_feature проект был по сути переписан, многие файлы удалены, сильно поменялась структура и т.п.

Вопрос: можно ли теперь как-то ветку master сделать веткой, например, old_version, а ветку new_feature сделать master-ом?

Nick Volynkin
  • 34,094
djudman
  • 235

2 Answers2

10
  • Если смержить точно не получается, то подменить ветки можно следующим образом:

    git checkout new_feature
    git merge -s ours master
    git checkout master
    git merge new_feature
    
  • Естественно, что такой реплейс веток приведет к проблемам при pull у всех девелоперов, которые продолжали работать над master, поэтому стоит сообщить им о том, что все было переписано и попросить сделать reset --hard.

M. Williams
  • 23,562
5

Попросту переименуйте ветки.

git branch -m master old_version
git branch -m new_feature master
Vladimir Gordeev
  • 5,396
  • 1
  • 24
  • 41
  • Или создать новый проект, взяв за основу один из релизов new_feature. – avp Jul 10 '12 at 12:11
  • 1
    В таком случае не сработает fast-forward для git push, что обычно не очень хорошо. – M. Williams Jul 10 '12 at 12:45