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