#git #version-control #bitbucket
#git #контроль версий #bitbucket
Вопрос:
Мой сценарий выглядит следующим образом. Я создал функциональную ветку от мастера, внес и зафиксировал в ней изменения локально. После этого репозиторий был реорганизован, прежде чем я смог нажать и объединить свои изменения. Теперь функциональные ветви должны создаваться из вновь созданной ветки разработки, а не из master. В рамках реорганизации моя ветка была удалена с сервера. Я еще не извлек (отредактировал) / извлек (отредактировал) с сервера. Я хочу попытаться переместить мои зафиксированные изменения из ныне удаленной ветки в новую ветку функций, которую я создам из ветки разработки. Я использую Bitbucket. мастер -> старая ветка с изменениями (удаленная с сервера, но доступная локально) для разработки -> новая ветка функций (будет создана)
Ответ №1:
давайте предположим, что ваша локальная старая ветка old-branch
, новая функциональная ветка, которую вы хотите создать new-branch
(вы ее еще не создали), старая базовая ветка master
и новая базовая ветка dev
, и давайте предположим, что ваш рабочий каталог чистый, а удаленное имя origin
и, наконец, давайте предположим, что хэш вашегопервый коммит в old-branch
is [first-hash]
и ваш последний коммит [last-hash]
(вы можете найти их, запустив git log old-branch
). так что это должно решить вашу проблему:
git fetch origin;
git checkout dev;
git pull origin dev;
git checkout -b new-branch;
git cherry-pick [first-hash]^..[last-hash]; # pay attention to the ^ sign!
Теперь new-branch
это точная копия old-branch
.
Комментарии:
1. Спасибо за ответ … Я добрался до этапа git fetch origin… Когда я попытался проверить dev (elop)… Получил сообщение об ошибке с надписью, пожалуйста, зафиксируйте ваши изменения или спрячьте их перед переключением ветвей. Прерывание … Мне это кажется странным , так как у меня нет никаких не зафиксированных изменений … Также проверено в VS… Ничего для постановки или фиксации
2. Не обращайте внимания на мой предыдущий комментарий … Похоже на сбой в VS … Не показал никаких изменений … Перезапустил его и начал показывать нестационарные изменения … Продолжайте выполнять остальные шаги … Обновит после завершения и пометит его как ответ, если все получится…
3. Это сообщение означает, что ваш рабочий каталог не является чистым. вы можете зафиксировать их или отбросить
git checkout .
и проверить, какие изменения произошлиgit diff