Git Изменения привязки применяются к новой ветке?

Я работал над мастер-ветвью, делал некоторые изменения, а затем спрятал их. Теперь мой мастер находится в HEAD.

Но теперь я хочу получить эти изменения, но к новой ветке, которая веткится из версии HEAD главной ветки.

Как мне это сделать?

Ответ 1

Не работает ли стандартная процедура?

  • внести изменения
  • git stash save
  • git branch xxx HEAD
  • git checkout xxx
  • git stash pop

Короче:

  • внести изменения
  • git stash
  • git checkout -b xxx
  • git stash pop

Ответ 2

Поскольку вы уже спрятали свои изменения, все, что вам нужно, это однострочный:

  • 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, она восстанавливает исходное состояние с отсутствием конфликтов.

Ответ 3

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

git stash branch branchName

Это сделает:

  1. новая ветка
  2. перенести изменения в эту ветку
  3. и удалите последний stash (как: git stash pop)