Как мне отформатировать патч с тем, что я спрятал?
Вопрос
В 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.