В репозитории весь проект находится в master. Как перенести его в отдельную ветку, чтобы можно было сделать merge request в master?

У меня есть задача, под которую мне выделили отдельный репозиторий. Я с самого начала не задумался о том, как буду отправлять её на ревью и делал всё в ветке master. Теперь, как я понимаю, мне нужно следующее: сделать ветку от мастера, а в мастере всё удалить. Таким образом станет возможно сделать merge request в master. В мастере нужно оставить .git и README.md.

Я верно понимаю процесс? Что-то нужно ещё?

Используется Gitlab.


Ответы (1 шт):

Автор решения: A K

На основе идеи @AlexR из комментариев.

Допустим у нас есть репозиторий с тремя коммитами:

C:\temp\1>git status
On branch master
nothing to commit, working tree clean

C:\temp\1>git log
commit 8607b728c12f11dd45aef65cf79e5e6009d08e3b (HEAD -> master)
Author: A K <[email protected]>
Date:   Fri May 7 17:31:44 2021 +0300

    Add file B

commit a55a094c4d4f47f87d70823d1780ea5cb9831fd7
Author: A K <[email protected]>
Date:   Fri May 7 17:31:21 2021 +0300

    Add file A

commit 879e28c46f87c34ff4ed4099aaf5a6e5ebb5e4ab
Author: A K <[email protected]>
Date:   Fri May 7 17:30:54 2021 +0300

    Add empty .gitignore

C:\temp\1>

И мы хотим коммиты с файлами A и B оставить в отдельной ветке feature1.

Тогда делаем две простых операции.

Во-первых, создадим ветку feature1:

C:\ak2m\1>git checkout -b feature1
Switched to a new branch 'feature1'

C:\ak2m\1>git status                                                                                                    
On branch feature1                                                                                                      
nothing to commit, working tree clean

Во-вторых перемотаем master на два коммита назад:

C:\ak2m\1>git checkout master
Switched to branch 'master'

C:\ak2m\1>git reset --hard HEAD~2
HEAD is now at 879e28c Add empty .gitignore

Всё!

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка