Как мне отформатировать патч с тем, что я спрятал?

StackOverflow https://stackoverflow.com/questions/2160638

  •  23-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

git stash show -p

Другие советы

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

Чтобы спрятать вывод в файл:

 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

Использовать

$> 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}

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

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

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

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

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

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

скажем, в ветке A вы спрятали некоторые изменения, называемые stash@{1}.

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

$git stash apply stash@{1}

это применяет изменения вашей ветки A к ветке B.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top