Я работал над основной веткой, сделал некоторые изменения и затем спрятал их. Теперь мой мастер в HEAD.
Но теперь я хочу получить эти изменения, но в новую ветвь, которая ветвится из версии HEAD главной ветки.
Как мне это сделать ?
Я работал над основной веткой, сделал некоторые изменения и затем спрятал их. Теперь мой мастер в HEAD.
Но теперь я хочу получить эти изменения, но в новую ветвь, которая ветвится из версии HEAD главной ветки.
Как мне это сделать ?
Ответы:
Стандартная процедура не работает?
git stash savegit branch xxx HEADgit checkout xxxgit stash popКороче:
git stashgit checkout -b xxxgit stash popgit stash save "description"команды, упомянутой ранее; а затем я git clearветвь (для уничтожения фактического рабочего каталога), а затем git stash apply stash@{my_desired_stash}в нужной ветке (после переключения на это с git checkout <branch>очевидно). Я знаю, что это не настоящее решение, но лучшее, что вы можете сделать с помощью git .
git stash dropпосле того, как совершил
Поскольку вы уже спрятали свои изменения, все, что вам нужно, это одна строка:
git stash branch <branchname> [<stash>]Из документов ( https://www.kernel.org/pub/software/scm/git/docs/git-stash.html ):
Создает и извлекает новую ветвь с именем < branchname >, начиная с коммита, в котором изначально был создан < stash >, применяет изменения, записанные в < stash >, к новому рабочему дереву и индексу. Если это удается, и < stash > является ссылкой на форму stash @ {< revision >}, он удаляет < stash >. Когда < stash > не указан, применяется последний.
Это полезно, если ветка, в которой вы запустили git stash save, изменилась настолько, что git stash не удалось применить из-за конфликтов. Поскольку хранилище применяется поверх коммита, который был HEAD во время запуска git stash, он восстанавливает исходно сохраненное состояние без конфликтов.
Если у вас есть какие-то изменения в вашей рабочей области, и вы хотите сохранить их в новой ветке, используйте эту команду:
git stash branch branchName
Это сделает:
- новая ветка
- перенести изменения в эту ветку
- и удалите последний тайник (как: git stash pop)