Как применить патч, созданный с помощью 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 и другими, чтобы предоставить полезную информацию о том, как коммит оказался в коде.

пример

git apply name-of-file.patch

Или, если вы пинаете это старой школы:

cd /path/to/other/repository
patch -p1 < 0001-whatever.patch

Сначала вы должны принять к сведению разницу между git am а также git apply

Когда вы используете git am Вы обычно хотите применить много патчей. Таким образом следует использовать:

git am *.patch

или просто:

git am

Git автоматически найдет патчи и применит их по порядку;-)

UPD
Здесь вы можете найти, как генерировать такие патчи

Если вы хотите применить его как коммит, используйте git am

Если вы используете 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
Другие вопросы по тегам