Перемещение всех коммитов за пределы первоначального коммита с мастера - PullRequest
0 голосов
/ 17 июля 2011

Я занимался разработкой коммитов в ветке master и хотел бы перенести все коммиты за пределы «начального коммита» в отдельную ветку разработки и сохранить мастер для версий выпуска.

сейчас мое дерево выглядит так:

master: A - B - C - D - E - F

Мне бы хотелось, чтобы это выглядело так:

development:   B - C - D - E - F
              /
master:      A -----------------

таким образом я смогу объединить выпуск следующим образом:

development:   B - C - D - E - F --- X
              /                       \
master:      A ----------------------- Y

Может кто-нибудь предложить лучший способ сделать это? я видел другие ответы с похожими, но не точными случаями, но я не хочу рисковать.

Ответы [ 2 ]

6 голосов
/ 17 июля 2011

Проще говоря:

(on master)
git branch development
git reset --hard A
0 голосов
/ 17 июля 2011

сначала создайте новую ветвь для коммита F (последний коммит на главном ветке):

git checkout -b dev master # or directly using the commit hash:
git checkout -b dev SHA1_OF_F # if master is currently checked out:
git checkout -b dev

, затем вернитесь назад к своей основной ветке (не разрушая ваше рабочее дерево)

git branch -f master SHA1_OF_A

проверьте мастер еще раз, если хотите продолжить работу с ним:

git checkout master

если вам не важно ваше рабочее дерево (оно чистое, то есть нет ни незафиксированных, ни неустановленных изменений, вы можете использовать git reset --hard как подсказал @ manojlds в своем ответе .

это изменяет (т.е. сокращает) историю главной ветви, поэтому убедитесь, что вы понимаете последствия. Если ваши изменения уже были переданыдля публичного репо другие пользователи будут иметь коммиты разработки, уже содержащиеся в master, и должны будут также сбросить свою ветку.

...