Как я могу отформатировать патч с тем, что я спрятал - PullRequest
117 голосов
/ 29 января 2010

В git я прячу свои изменения. Возможно ли, что я смогу создать патч с тем, что я спрятал? И применить этот патч в каком-то другом хранилище (мой коллега)?

Я знаю «git format-patch-1», но я думаю, что это то, что я сделал. Но я ищу то же самое для изменений, которые я спрятал?

А как мне применить патч в другом репозитории?

Ответы [ 5 ]

134 голосов
/ 29 января 2010

Конечно, git stash show поддерживает это:

git stash show -p
49 голосов
/ 15 апреля 2015

В этом ответе содержится информация как о сохранении патча, так и о применении его там, где вы хотите его использовать.

Чтобы сохранить вывод в файле:

 git stash show -p --color=never > my-patch-name.patch

Убедитесь, что патч выглядит хорошо:

git apply --stat my-patch-name.patch

Убедитесь, что нет ошибок:

git apply --check my-patch-name.patch

Применить патч

git apply my-patch-name.patch
16 голосов
/ 30 января 2010

Используйте

$> git stash list
stash@{0}: WIP on master: 84fx31c Merged with change to /public/
stash@{1}: WIP on master: 463yf85 FlupResource: also takes json as a query parameter

, чтобы получить список ваших недавно спрятанных вещей. Git фактически создает объекты коммита, когда вы прячете.

Они коммиты, как и все остальное. Вы можете проверить их в ветке:

$> git checkout -b with_stash stash@{0}

Затем вы можете опубликовать эту ветку, и ваш коллега может объединить или выделить этот коммит.

11 голосов
/ 10 октября 2014

Вышеуказанные решения не будут работать для двоичных данных. Следующее добавить поддержку для этого:

git stash show stash@{0} -p --binary

Редактировать

Примечание: я просто хотел добавить комментарий к ответам выше, но моей репутации недостаточно.

2 голосов
/ 05 января 2017

Я полагаю, что это может быть одним из обновлений от Git в последнее время. Вам больше не нужно исправлять изменения, которые вы спрятали. Вы можете просто применить свои скрытые изменения в одной ветви к другой.

скажем, на ветке A вы спрятали некоторые изменения, которые называются stash@ndom1‹.

теперь вы переключаетесь на ветку B. Вы можете просто сделать:

$git stash apply stash@{1}

это применимо, ваша ветвь А изменится на ветку Б.

...