git stash изменения применяются к новой ветке? - PullRequest
289 голосов
/ 03 августа 2011

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

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

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

Ответы [ 2 ]

419 голосов
/ 03 августа 2011

Стандартная процедура не работает?

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

Короче:

  • внести изменения
  • git stash
  • git checkout -b xxx
  • git stash pop
212 голосов
/ 01 апреля 2013

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

  • git stash branch <branchname> [<stash>]

Из документов (https://www.kernel.org/pub/software/scm/git/docs/git-stash.html):

Создает и извлекает новую ветку с именем <<em> branchname >, начиная с коммита, при котором изначально был создан <<em> stash >, применяет изменения, записанные в <<em> stash > к новому рабочему дереву и индексу. Если это удается, и <<em> stash > является ссылкой на форму stash @ {<<em> revision >}, он удаляет <<em> stash >. Если <<em> stash > не указан, применяется последний.

Это полезно, если ветка, в которой вы запустили git stash save, изменилась настолько, что git stash не удалось выполнить из-за конфликтов. Поскольку хранилище применяется поверх коммита, который был HEAD во время запуска git stash, он восстанавливает исходное сохраненное состояние без конфликтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...