Я работал над мастер-ветвью, делал некоторые изменения, а затем спрятал их. Теперь мой мастер находится в HEAD.
Но теперь я хочу получить эти изменения, но к новой ветке, которая веткится из версии HEAD главной ветки.
Как мне это сделать?
Я работал над мастер-ветвью, делал некоторые изменения, а затем спрятал их. Теперь мой мастер находится в HEAD.
Но теперь я хочу получить эти изменения, но к новой ветке, которая веткится из версии HEAD главной ветки.
Как мне это сделать?
Не работает ли стандартная процедура?
git stash save
git branch xxx HEAD
git checkout xxx
git stash pop
Короче:
git stash
git checkout -b xxx
git 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)