Учебники

Git — Патч Операция

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

Приведенная выше команда даст следующий результат —