MyTetra Share
Делитесь знаниями!
Как в Git создать новую ветку в условиях, когда что-то уже было изменено после последнего коммита
Время создания: 01.07.2015 01:14
Текстовые метки: git, новая, ветка, последний, коммит
Раздел: Компьютер - Программирование - Системы контроля версий (VCS) - Git
Запись: xintrea/mytetra_syncro/master/base/1435702494qsiyt1bffg/text.html на raw.github.com

Вопрос


Сделал я коммит, потом стал править код. Под конец правки осознал, что эта правка уже тянет на отдельную ветку.


Как сделать новый коммит так, чтобы образовалась новая ветка, и в нее поместилась последняя правка проекта?



Примечание


Я нашел команду checkout -m, которая вроде делает то что нужно. Но она вначале сохраняет изменение в текущей ветке, а изменения мне требуется сохранить в новой ветке:


Если в текущей ветке были какие-то изменения по сравнению с последним коммитом в ветке (HEAD), то команда checkout откажется производить переключение на другую ветку, дабы не потерять произведенную работу.


Предполагаю, что в случае, когда изменения надо все же сохранить, у команды checkout используют ключ -m. Тогда команда перед переключением попробует залить изменения в текущую ветку и, после разрешения возможных конфликтов, переключиться в новую:


checkout -m some-other-branch


... но, видимо, так Git работать не будет.



Ответ


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


Команды будут такими:



$ git stash

$ git checkout -b new_useless_feature

$ git stash pop



После этого можно продолжить работать обычным способом. Вначале дается команда git add ., потом git commit, и изменения будут залиты в новую ветку.


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования