Как я могу перенести свою работу и изменения из ветки 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, если вы не нажали ее в другом месте, и другие изменения были сделаны против нее.