Переместить существующие, незафиксированные работу в новую ветку в Git

Я приступил к работе над новой функцией и после кодирования немного, я решил, что эта функция должна быть на своей ветке.

Как мне перенести незафиксированные изменения в новую ветку и сбросить мой нынешний?

Я хочу сбросить текущей ветви при сохранении существующих работы на новый объект.

Решение

Используйте следующую:

git checkout -b 

Это оставит вашу текущую ветку как создать и оформить новую ветку и сохранить все ваши изменения. Затем вы можете сделать коммит с:

git add 

и совершить в свой новый филиал:

git commit -m ""

Изменения в рабочем каталоге, а также изменениями устроили в индекс не принадлежат ни к одной ветви. Эти изменения, где эти изменения заканчиваются.

Вы Don'т сброс вашего оригинального ветку, он остается как есть. Последний коммит на в <старый-филиал> все равно будет то же самое. Поэтому вы кассе -B`, а затем совершить.

Комментарии (22)

В качестве альтернативы:

  1. Сохранить текущие изменения темп заначку:

$ Git в заначке

  1. Создать новую ветку на основе этой заначки, и переключиться на новую ветку:

$ Git в заначке филиал <Нью-филиал> тайник@{0}

Совет: использование клавиши Tab для уменьшения введя имя притон.

Комментарии (18)

Если вы прилагаете совершает на главной ветке, а мы теряем тебя, но теперь вы хотите, чтобы переместить эти коммиты в другой ветке, это быстрый способ:

  1. Скопировать текущую историю на новую ветку, принеся с собой тоже все незафиксированные изменения:

ГИТ кассе -б <новые-филиал>

  1. Теперь силы оригинал на "грязный" в филиал откатить: (без переключения на нее)

филиал -Ф ГИТ <предыдущая-филиал> <ранее фиксацией-ИД>

Например:

филиал -Ф ГИТ мастер происхождения/мастер

или если вы сделали 4 совершает:

филиал -Ф ГИТ мастер Глава~4

Предупреждение: филиал -Ф ГИТ мастер происхождения/мастер будет reset в information слежения за этой веткой. Так что если вы настроены ветке ваш "мастер" толкать на что-то другое, чем происхождения/мастер то, что конфигурации будут потеряны.

Предупреждение: есть также опасность, если вы перебазироваться после разветвления, которые должны быть описаны здесь](https://stackoverflow.com/a/36463546/99777). Единственный способ избежать этого-создать новую историю с помощью сливок. Эта ссылка описывает самый безопасный надежный метод. Если у вас есть несохраненные изменения, вы можете хотеть заначка ГИТв начале ив Git Сташ поп` в конце.

Комментарии (1)

Обычный сценарий заключается в следующем: я забыл создать новую ветку для новой функции, и делает всю работу в старую ветку. Я совершил все "Старый" и работает в ветку master, и я хочу, чтобы мои новые ветки растут от в "Мастер" по. Я не сделал один из моих новых работ. Вот структура филиала: на "Мастер" и->"и Old_feature"и

git stash 
git checkout master
git checkout -b "New_branch"
git stash apply
Комментарии (0)

Если вы сделаете это, вы могли бы также Выберите один идентификатор фиксации. Я делаю это часто, когда я начинаю работать в мастер, а затем хотите создать локальную ветку, прежде чем я нажму до моего происхождения/.

git cherry-pick 

Есть много вы можете сделать с вишней-выбор, как говорится здесь, но это может быть случай для вас.

Комментарии (2)

Я использовал [@Робин][1] ответ & перечисляя все, что я сделал,


git status                               
Комментарии (0)

На самом деле, существует очень простой способ сделать это с GitHub Desktop теперь, что я Дон'т считаю, что до.

Все, что вам нужно сделать, это перейти на новую ветку на GitHub рабочего стола и вам будет предложено оставить свои изменения в текущую ветку (который будет спрятан), или внести свои изменения на новую ветку. Просто выберете второй вариант, чтобы принести изменения в новую ветку. Тогда вы можете совершать как обычно.

Комментарии (0)

Это может быть полезно для всех, используя инструменты для работы с Git

Команды

Выключатель ответвления - это внести изменения в новый филиал. Затем вы можете применить изменения.

 $ git checkout -b 

TortoiseGIT

Щелкните правой кнопкой мыши на свой репозиторий и затем использовать TortoiseGit->переключатель/выезда

Программа

Используйте "в кассу" и кнопка для переключения филиала. Вы увидите, что "выезд" и кнопку вверху после нажатия на ветке. Изменения в текущей ветке будут применены автоматически. Затем вы можете их совершить.

Комментарии (0)