В git я прячу свои изменения. Могу ли я создать патч из того, что припрятал? А затем применить этот патч в каком-нибудь другом репозитории (мой коллега)?
Я знаю git format-patch -1
, но думаю, что это за то, что я совершил. Но я ищу то же самое для изменений, которые я спрятал.
А как я могу применить патч в другом репозитории?
man patch
и не увидел никаких вариантов для интерактивного применения патчей. Однако, поскольку файлы патчей сами по себе представляют собой простые текстовые файлы, обычно нужно отредактировать патч в текстовом редакторе, чтобы вырезать соответствующие части для примененияpatch
. В качестве альтернативы, если вы применяете патч в другом репозитории Git, вы можете применить его все, а затем выборочноgit checkout
файлы, которые вы не хотите изменять (git checkout
с именем файла отбрасываются неустановленные изменения).git add --interactive ${YOUR_FILES}
и это даст вам возможность частично зафиксировать.git stash show -p stash@{1} > patch.txt
Этот ответ предоставляет информацию как о сохранении патча, так и о его применении там, где вы хотите его использовать.
Чтобы сохранить вывод в файле:
Убедитесь, что патч выглядит хорошо:
Убедитесь в отсутствии ошибок:
Применить патч
источник
git apply --check --ignore-space-change --ignore-whitespace my-patch-name.patch
Примените патч:git apply --ignore-space-change --ignore-whitespace my-patch-name.patch
git apply
не получилось бы различий.Использовать
чтобы получить список недавно спрятанных вещей. Git фактически создает объекты фиксации, когда вы храните их.
Они такие же коммиты, как и все остальное. Вы можете проверить их в ветке:
Затем вы можете опубликовать эту ветку, и ваш коллега сможет объединить или выделить этот коммит.
источник
Вышеупомянутые решения не будут работать с двоичными данными. Следующее добавляет поддержку для него:
редактировать
Примечание: я просто хотел добавить комментарий к приведенным выше ответам, но моей репутации недостаточно.
источник
Я считаю, что это может быть одно из недавних обновлений Git. вам больше не нужно исправлять изменения, которые вы спрятали. вы можете просто применить сохраненные изменения в одной ветке к другой.
скажем, в ветке A вы спрятали некоторые изменения, называемые stash @ {1}.
теперь вы переключаетесь на ветку B. вы можете просто сделать:
это применяет изменения вашей ветки A к ветке B.
источник