Как я могу перенести свою работу и изменения из ветки master
на вновь созданную ветвь и оставить основную ветвь неповрежденной после перемещения?
Как переместить изменения из одной ветки в другую ветвь git?
Ответ 1
Вы можете создать новую ветвь, указывающую на текущую фиксацию, используя git branch branchname
(или git checkout -b branchname
, если вы хотите проверить ее напрямую). Это будет в основном дублировать вашу основную ветку, чтобы вы могли продолжить работу там.
Если вы успешно скопировали ветку, вы можете reset master
в ее исходную точку, используя git reset --hard commit
, где commit
- хэш коммита, который должен быть последним на главном сервере.
Итак, например, у вас есть такая ситуация:
---- 1 ---- 2 ---- 3 ---- 4 ---- 5 ---- 6
^ ^
original master
master commit
Итак, вы проверили master
на commit 6
, и вы хотите создать новую ветвь ticket
, указывающую на это 6
, при сбросе master
на 3
:
git branch ticket
git reset --hard 3
git checkout ticket
И затем youre на ticket
, указывающий на commit 6
, а master
указывает на 3
.
Ответ 2
Если вы совершили (скажем) 2 раза после того, как поняли, что должны были находиться в ветке, просто выполните
git branch work_branch
git reset --hard HEAD~2
замените 2 на количество задержек, которые вы хотите отправить. Вы по-прежнему будете хозяином на этом этапе, если вы хотите перейти к ветке, чтобы продолжить работу, просто git checkout work_branch
см. git rev-parse --help
, если вы хотите понять синтаксис того, как выполнить обратное копирование своего дерева коммандов с помощью ссылок, таких как HEAD~2
Ответ 3
Создайте ветвь new, из которой вы должны были иметь, а затем вишни выберите изменения в неправильной ветки в новую ветку.
Затем вы можете удалить ветвь bad, если вы не нажали ее в другом месте, и другие изменения были сделаны против нее.