Как применить патч, созданный с помощью git format-patch?
У меня есть 2 локальных репозитория git, оба указывают на один и тот же удаленный репозиторий.
В одном репозитории git, если я делаю git format-patch 1
Как я могу применить этот патч к другому хранилищу?
7 ответов
Примечание. Сначала вы можете просмотреть, что будет делать ваш патч:
Сначала статистика:
git apply --stat a_file.patch
Затем пробный прогон для выявления ошибок:
git apply --check a_file.patch
Наконец, вы можете использовать git am
применить ваш патч: он позволяет подписать примененный патч.
Это может быть полезно для дальнейшего использования.
git am --signoff < a_file.patch
Смотрите пример в этой статье:
В вашем журнале git вы обнаружите, что сообщения о коммитах содержат тег "Подписано". Этот тег будет прочитан Github и другими, чтобы предоставить полезную информацию о том, как коммит оказался в коде.
Или, если вы пинаете это старой школы:
cd /path/to/other/repository
patch -p1 < 0001-whatever.patch
Сначала вы должны принять к сведению разницу между git am
а также git apply
Когда вы используете git am
Вы обычно хотите применить много патчей. Таким образом следует использовать:
git am *.patch
или просто:
git am
Git автоматически найдет патчи и применит их по порядку;-)
UPD
Здесь вы можете найти, как генерировать такие патчи
Если вы используете IDE JetBrains (например, IntelliJ IDEA, Android Studio, PyCharm), вы можете перетащить файл исправления и поместить его в IDE, после чего появится диалоговое окно, отображающее содержимое исправления. Все, что вам нужно сделать сейчас, это нажать "Применить патч", и коммит будет создан.
Другой способ — добавить один из локальных репозиториев в качестве удаленного к другому.
$ cd repo1
$ git remote add repo2 file:///path/to/repo2/.git
Так что вы можете получать ветки, перемещать локальные ветки или выбирать коммиты из одного локального репо в другое.
$ git remote update repo2
$ git fetch repo2 branch:branch-from-repo2
$ git log branch-from-repo2