Возьмите все мои изменения в текущей ветке и переместите их в новую ветку в Git
Я начал работу над тем, что, как я думал, будет незначительным исправлением ошибок в моей главной ветке. Тем не менее, он вышел из-под контроля до такой степени, что, как мне бы хотелось, я создал отдельную ветвь, чтобы сделать разработку в первую очередь.
Итак, сейчас я хочу сделать следующее:
- Создайте новую ветвь, называемую (скажем) "edge"
- Переместите все измененные/не проверенные файлы на главном сервере (таким, что мастер не изменился с момента начала исправления ошибок)
- Завершите работу над краем, слейте обратно в мастер
Как я могу это сделать?
Ответы
Ответ 1
Если вы еще ничего не совершали, вы уже находитесь в правильном положении.
- Создайте новую ветку:
git checkout -b edge
- Ваши файлы не изменились. Просто
git add
, что нужно и как обычно.
- Когда вы закончите выполнение
edge
, вернитесь к master
с помощью git checkout
и git merge edge
.
Ответ 2
Чтобы добавить к ответу JB, если вы уже начали делать несколько коммитов на сервере для того, что в итоге было "краевым" усилием, вы могли:
git stash
git checkout -b edge master
git branch -f master SHA1_before_your_commits
git stash apply
Ответ 3
Если вы пытаетесь переместить работу из мастера в ветвь, которая уже существует, но находится за мастером, git не позволит вам переключиться на другую ветку. В этом случае сделайте следующее:
git stash
git checkout oldBranch
git merge master
git checkout master
git stash apply
git checkout oldBranch