У меня есть два локальных репозитория git, оба указывают на тот же удаленный репозиторий.
В одном репозитории git, если я сделаю git format-patch 1
, как я могу применить этот патч к другому репозиторию?
У меня есть два локальных репозитория git, оба указывают на тот же удаленный репозиторий.
В одном репозитории git, если я сделаю git format-patch 1
, как я могу применить этот патч к другому репозиторию?
Примечание: сначала вы можете предварительно просмотреть, что будет делать ваш патч:
Сначала статистика:
git apply --stat a_file.patch
Затем пробный прогон для обнаружения ошибок:
git apply --check a_file.patch
Наконец, вы можете использовать git am
, чтобы применить исправление как совершить. Это также позволяет вам выйти примененный патч.
Это может быть полезно для дальнейшего использования.
git am --signoff < a_file.patch
См. Пример в этой статье:
В журнале git вы обнаружите, что сообщения о фиксации содержат тег Signed-off-by. Этот тег будет прочитан Github и другими, чтобы предоставить полезную информацию о том, как фиксация попала в код.
git am < somepatch.patch
дает фатальный результат: пустое имя идентификатора (для ‹›) не допускается. Может кто-нибудь объяснить мне, почему?
- person birgersp; 03.09.2019
Author
заголовки в патче и / или вы не git config user.{name,email}
.
- person ulidtko; 18.06.2020
git apply --check
говорит patch does not apply
, а git apply -3
говорит repository lacks the necessary blob to fall back on 3-way merge.
В git перебазирование коммитов - такая легкая задача; но как люди переустанавливают свои исправления поверх обновленного кода?
- person ulidtko; 18.06.2020
Или, если вы придерживаетесь старой школы:
cd /path/to/other/repository
patch -p1 < 0001-whatever.patch
git apply
не работает, не знаю, почему
- person Sean Breckenridge; 01.11.2020
Сначала вы должны обратить внимание на разницу между git am
и git apply
Когда вы используете git am
, вы обычно хотите применить много исправлений. Таким образом следует использовать:
git am *.patch
или просто:
git am
Git автоматически найдет патчи и применит их по порядку ;-)
UPD
Здесь вы можете узнать, как создавать такие исправления.
git apply
.. и --reverse
:-) ????
- person Jordan Gee; 12.09.2019
Если вы хотите применить его как фиксацию, используйте git am.
git apply
- person Sebi2020; 19.01.2021
git apply
применяет изменения как патч, а не как фиксацию, в то время как git am
предполагает, что текст электронного письма является сообщением фиксации (с некоторыми исключениями), и применяет изменения, создавая фиксацию (и может попытаться разрешить конфликты с 3- способ слиться с git am --3way
.
- person Jakub Narębski; 19.01.2021
git am
работать. Он останавливается в середине, применяя изменения, и сгенерированный коммит является неполным.
- person KansaiRobot; 04.07.2021
Если вы используете IDE JetBrains (например, IntelliJ IDEA, Android Studio, PyCharm), вы можете перетащить файл патча и поместить его внутри IDE, и появится диалоговое окно, показывающее содержимое патча. Все, что вам нужно сделать сейчас, это нажать «Применить патч», и будет создана фиксация.