Patch — это текстовый файл, содержимое которого похоже на Git diff, но наряду с кодом оно также содержит метаданные о коммитах; например, идентификатор фиксации, дата, сообщение о коммите и т. д. Мы можем создать патч из коммитов, а другие люди могут применить их к своему хранилищу.
Джерри реализует функцию strcat для своего проекта. Джерри может создать путь своего кода и отправить его Тому. Затем он может применить полученный патч к своему коду.
Джерри использует команду Git format-patch для создания патча для последнего коммита. Если вы хотите создать патч для определенного коммита, используйте COMMIT_ID с командой format-patch.
[jerry@CentOS project]$ pwd /home/jerry/jerry_repo/project/src [jerry@CentOS src]$ git status -s M string_operations.c ?? string_operations [jerry@CentOS src]$ git add string_operations.c [jerry@CentOS src]$ git commit -m "Added my_strcat function" [master b4c7f09] Added my_strcat function 1 files changed, 13 insertions(+), 0 deletions(-) [jerry@CentOS src]$ git format-patch -1 0001-Added-my_strcat-function.patch
Приведенная выше команда создает файлы .patch внутри текущего рабочего каталога. Том может использовать этот патч для изменения своих файлов. Git предоставляет две команды для применения патчей: git am и git apply соответственно. Git apply изменяет локальные файлы без создания commit, в то время как git am изменяет файл и также создает commit.
Чтобы применить патч и создать коммит, используйте следующую команду —
[tom@CentOS src]$ pwd /home/tom/top_repo/project/src [tom@CentOS src]$ git diff [tom@CentOS src]$ git status –s [tom@CentOS src]$ git apply 0001-Added-my_strcat-function.patch [tom@CentOS src]$ git status -s M string_operations.c ?? 0001-Added-my_strcat-function.patch
Патч успешно применяется, теперь мы можем просмотреть изменения с помощью команды git diff .
[tom@CentOS src]$ git diff
Приведенная выше команда даст следующий результат —