Git-패치 작업
Patch는 내용이 Git diff와 유사한 텍스트 파일이지만 코드와 함께 커밋에 대한 메타 데이터도 포함합니다. 예 : 커밋 ID, 날짜, 커밋 메시지 등. 커밋에서 패치를 만들 수 있으며 다른 사람들이이를 저장소에 적용 할 수 있습니다.
Jerry는 자신의 프로젝트를 위해 strcat 함수를 구현합니다. Jerry는 자신의 코드 경로를 만들어 Tom에게 보낼 수 있습니다. 그런 다음받은 패치를 자신의 코드에 적용 할 수 있습니다.
Jerry는 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현재 작업 디렉토리 내의 파일. Tom은이 패치를 사용하여 파일을 수정할 수 있습니다. Git은 패치를 적용하는 두 가지 명령을 제공합니다.git am과 git apply, 각각. Git apply 커밋을 생성하지 않고 로컬 파일을 수정하는 반면 git am 파일을 수정하고 커밋도 생성합니다.
패치를 적용하고 커밋을 생성하려면 다음 명령을 사용하십시오.
[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
위의 명령은 다음 결과를 생성합니다-
diff --git a/src/string_operations.c b/src/string_operations.c
index 8ab7f42..f282fcf 100644
--- a/src/string_operations.c
+++ b/src/string_operations.c
@@ -1,5 +1,16 @@
#include <stdio.h>
+char *my_strcat(char *t, char *s)
diff --git a/src/string_operations.c b/src/string_operations.c
index 8ab7f42..f282fcf 100644
--- a/src/string_operations.c
+++ b/src/string_operations.c
@@ -1,5 +1,16 @@
#include <stdio.h>
+char *my_strcat(char *t, char *s)
+
{
+
char *p = t;
+
+
+
while (*p)
++p;
+
while (*p++ = *s++)
+ ;
+ return t;
+
}
+
size_t my_strlen(const char *s)
{
const char *p = s;
@@ -23,6 +34,7 @@ int main(void)
{