Возьмите все мои изменения в текущей ветке и переместите их в новую ветку в Git


Я начал работать над тем, что я думал, будет исправлена ошибка на моей ветке master. Тем не менее, он вышел из-под контроля до такой степени, что я хотел бы создать отдельную ветку для разработки в первую очередь.

Так что прямо сейчас то, что я хотел бы сделать, это:

  1. создать новую ветку под названием (допустим) "край"
  2. переместить все измененные / неотслеженные файлы на master to edge (таким образом, что master не изменился с момента запуска ошибки исправить)
  3. закончить мою работу на краю, слиться обратно в master

Как я могу это сделать?

3 99

3 ответа:

если вы еще ничего не совершали, вы уже находитесь в правильном положении.

  1. создать новую ветку: git checkout -b edge
  2. ваши файлы не изменились. Просто git add что нужно и зафиксировать как обычно.
  3. когда вы закончите совершать на edge, переключитесь обратно в master С git checkout и git merge edge.

чтобы добавить к ответу JB, если у вас есть уже начал делать несколько коммитов на master для того, что в конечном итоге стало" крайним " усилием, вы могли бы:

git stash
git checkout -b edge master
git branch -f master SHA1_before_your_commits
git stash apply

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

git stash
git checkout oldBranch
git merge master
git checkout master
git stash apply
git checkout oldBranch