Как добавить дальнейшие изменения в тайник в Git - PullRequest
20 голосов
/ 09 ноября 2011

Предположим, что я спрятал некоторые изменения, и я хочу добавить другие изменения в тот же самый кэш (например, stash@{0}).Есть простой способ сделать это?Как насчет объединения двух тайников в один?

Ответы [ 2 ]

13 голосов
/ 09 ноября 2011

Я не вижу никакой опции "git stash", позволяющей изменить существующий git stash.

Возможный способ добиться этого будет:

  • stash ваши дополнительныеизменения (stash@{1})
  • спрятать все остальное (stash@{2})
  • создать ветку tmp из коммита (HEAD), которую вы сейчас модифицируете
  • git stash pop дважды
  • git stash, создание нового stash@{1} с обоим содержимым,
  • удаление вашей временной ветки и извлечение начальной ветки, в которой вы находитесь в
  • git stash pop один раз (чтобы восстановить все ожидающие изменения)
  • продолжить выборочный тайник

Пять лет спустя Powerslave предлагает вкомментарии :

Волшебство ветвления совершенно не нужно.
Вы можете просто

  1. Создать новый сундук с тем, что у вас есть.
  2. git stash apply оба набора изменений (вместо этого вы можете git stash pop, но в этом случае у вас проблемы, если вы случайно облажались).
  3. Создайте новый тайник с этими объединенными изменениями.
  4. git stash drop два других набора изменений, если вы использовали apply вместо pop
10 голосов
/ 05 декабря 2014

Я не думаю, что мы должны следовать всем этим шагам,

git stash pop [это применит ваш последний stash сохраненных изменений stash {@ 0}], а затем снова сказать, git stash [это создаст новыйВ stash будут все изменения в stash @ {0}]

...