Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

Git Diff:방법 가이드

git diff 명령은 두 커밋의 파일 간 또는 현재 저장소와 이전 커밋 간의 차이점을 보여줍니다. 이 명령은 변경된 파일에 대한 헤더와 메타데이터로 표시되는 변경 사항을 표시합니다.

Git 버전 제어 시스템으로 작업할 때 저장소의 데이터를 다른 데이터 소스와 비교할 수 있습니다. 예를 들어, 두 개의 다른 커밋을 서로 비교하거나 두 개의 파일을 비교할 수 있습니다.

바로 여기에서 diff 함수가 등장합니다. Diffing은 두 개의 입력을 받아들이고 해당 데이터 소스 사이에 존재하는 변경 사항을 표시하는 함수입니다. Diff 함수는 분기, 파일 및 커밋에서 실행할 수 있습니다.

이 튜토리얼에서는 Git으로 diffing하는 기본 사항과 git diff 명령을 사용하는 방법을 예제와 함께 설명합니다. 이 튜토리얼을 다 읽고 나면 git diff 명령 사용의 전문가가 될 것입니다.

Git Diff 명령

git diff 명령은 두 커밋의 파일 간 또는 커밋과 현재 저장소 간의 차이점을 표시합니다. 파일에서 어떤 텍스트가 추가, 제거, 변경되었는지 확인할 수 있습니다.

git diff 명령의 구문은 다음과 같습니다.

git diff

기본적으로 git diff 명령은 저장소에 대한 커밋되지 않은 변경 사항을 표시합니다.

원본 파일에서 제거된 줄과 원본 파일에 추가되거나 변경된 줄을 볼 수 있습니다. 종종 Git diff는 Git 저장소의 분기를 비교하는 데 사용됩니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

커밋 간 Git 차이

비교하려는 커밋을 참조하는 ref의 이름을 지정하여 두 Git 커밋 간의 파일을 비교할 수 있습니다. 참조는 현재 분기를 참조하는 커밋 ID 또는 HEAD일 수 있습니다.

git diff  

Git 리포지토리에 있는 두 커밋을 비교해 보겠습니다.

그렇게 하려면 먼저 비교할 파일이 있는 커밋의 ID를 검색해야 합니다. 저장소의 모든 커밋에 대한 간략한 요약을 반환하는 git log –pretty=oneline 명령을 사용하여 이 작업을 수행할 수 있습니다.

git log --pretty=oneline

이 명령은 다음을 반환합니다.

5141ea9c41cdc7152408bfcab54a910f34441855 (HEAD ->; master) feat:업데이트 README.md749055ee99df2aa6f5adc4cbe4bfc708395f1c2e docs:

이제 이 두 커밋을 비교하려고 한다고 가정합니다. 다음 명령을 사용하여 수행할 수 있습니다.

git diff 5141ea9c41cdc7152408bfcab54a910f34441855 749055ee99df2aa6f5adc4cbe4bfc708395f1c2e

위의 명령은 두 커밋에서 diff 작업을 수행합니다.

가지 간의 Git 차이점

diff 명령을 사용하여 두 Git 분기를 비교하려면 비교하려는 두 분기를 인수로 지정합니다. 각 분기 이름 사이에 두 개의 점을 사용해야 합니다. 이 점은 각 분기의 최신 커밋을 읽고 비교하려는 것을 나타냅니다.

git diff ..

"마스터" 브랜치를 저장소에 있는 "dev-v0.9"라는 브랜치와 비교하고 싶다고 가정합니다. 다음 명령을 사용하여 수행할 수 있습니다.

git diff 마스터 dev-v0.9

이 명령이 실행되면 코드베이스의 "마스터" 및 "dev-v0.9" 분기 간에 diff가 실행됩니다.

마찬가지로 두 개의 다른 분기에서 특정 파일을 비교할 수 있습니다. 이렇게 하려면 위와 동일한 구문을 사용하고 비교하려는 파일을 추가로 지정할 수 있습니다.

"마스터" 및 "dev-v0.9" 분기에서 README.md 파일을 비교하려고 한다고 가정합니다. 다음 코드를 사용하여 그렇게 할 수 있습니다.

git diff 마스터 dev-v0.9 ./README.md

이것은 "master" 및 "dev-v0.9" 분기에서 README.md 파일(현재 디렉토리에 있으며 "./" 구문으로 표시됨)을 비교합니다.

Git Diff 명령 예제

빈 저장소를 초기화했고 README.md 파일로 저장소를 시작하려고 한다고 가정해 보겠습니다. 다음 문장이 포함된 README.md 파일을 저장소에 만들었습니다.

Git diff 기능의 예입니다.

파일 준비 및 커밋

git commit 명령을 사용하여 이 파일로 커밋을 만들 것입니다.

git 커밋

이를 통해 저장소에 대한 변경 사항을 저장할 수 있습니다. git 명령은 다음을 반환합니다.

[마스터(루트 커밋) 749055e] 문서:README.md1 파일 생성 변경, 삽입(+) 생성 모드 100644 README.md

이 단계에서 git diff 명령을 실행하면 아무 일도 일어나지 않습니다. 이는 저장소가 초기화되었고 저장소의 파일 간에 변경 사항이 없기 때문입니다. 이제 기본 저장소가 있으므로 저장소에 있는 파일의 내용을 변경할 수 있습니다. 이렇게 하면 git diff 명령이 실행되는 것을 볼 수 있습니다.

"We just added this line to our file"이라는 문장을 추가한다고 가정해 보겠습니다. README.md 파일에. 다음 명령을 사용하여 수행할 수 있습니다.

cho "이 줄을 파일에 추가했습니다.">> README.md

위의 명령은 README.md 파일에 문장을 추가합니다.

이는 이제 초기 README.md 파일과 저장소의 현재 README.md 파일 간에 차이가 있음을 의미합니다.

git diff 명령을 실행하면 이 두 파일의 차이점을 볼 수 있습니다. 기본적으로 git diff 명령은 최신 커밋과 저장소의 현재 상태 사이의 모든 파일에 대해 diff를 생성합니다.

커밋 간 Git Diff 실행

명령을 실행하면 다음 응답이 반환됩니다.

diff --git a/README.md b/README.mdindex f808522..f08e544 100644--- a/README.md+++ b/README.md@@ -1 +1,2 @@+방금 추가했습니다 이 줄을 파일에 추가합니다.

Git diff 기능의 예입니다.

이것은 git diff 명령의 일반적인 결과입니다. 결과는 결합된 diff 형식으로 파일에 추가되거나 제거된 내용을 보여줍니다.

git diff 명령은 마지막 커밋과 현재 저장소 사이에 있는 모든 파일의 모든 변경 사항 목록을 반환합니다.

저장소의 특정 파일에 대한 변경 사항을 검색하려면 해당 파일을 세 번째 매개변수로 지정할 수 있습니다. README.md 파일에 대한 변경 사항만 보기를 원한다고 가정합니다.

이 예에서는 README.md 파일만 변경했으므로 변경 사항만 표시됩니다. 그러나 더 큰 리포지토리로 작업하는 경우 한 파일의 변경 사항만 비교할 수 있습니다. 이렇게 하려면 다음 명령을 사용할 수 있습니다.

git diff README.md

이 명령을 사용하면 README.md 파일의 현재 버전을 저장소에 커밋된 마지막 버전과 비교할 수 있습니다.

Git Diff 분석

Git diff는 저장소에 있는 파일 간의 변경 사항을 분석하는 데 사용할 수 있는 여러 구성 요소를 제공합니다. 이전 예를 참조하여 분류해 보겠습니다.

입력 파일

diff의 첫 번째 구성요소는 입력 파일입니다. . diff의 이 부분은 diff에서 비교되는 파일을 알려줍니다.

현재 버전의 코드에 있는 README.md 파일을 마지막 버전의 코드에 있는 README.md 파일과 비교하고 있습니다. 이것은 코드의 첫 번째 줄에 명시되어 있습니다.

diff --git a/README.md b/README.md

메타데이터

다음으로 diff에는 메타데이터가 포함됩니다. Git 리포지토리용. 이 메타데이터는 Git에서 파일 변경 사항을 추적하는 데 사용하는 개체 버전 레이블을 표시합니다.

이 정보는 대부분의 diff 명령에서 거의 사용되지 않습니다. 위의 예에서 메타데이터는 다음과 같습니다.

인덱스 f808522..f08e544 100644

마커 변경

Git diff 출력의 다음 부분은 변경 마커입니다. . 이 파일 패턴 마커는 파일에 어떤 유형의 변경 사항이 적용되었는지 알려줍니다. 위의 예에 대한 변경 마커는 다음과 같습니다.

--- a/README.md++++ b/README.md

이 마커는 /README.md에서 변경된 사항(빼기 기호로 표시)이 변경되었음을 알려주며, 이는 b/README.md(더하기 기호로 표시)에 반영됩니다.

코드 변경

마지막으로 diff는 코드에 대한 변경 사항 목록을 반환합니다. . 전체 파일 비교와 달리 diff는 변경된 파일 섹션만 표시합니다. 이 예에서는 파일에 한 줄을 추가하여 다음 결과를 반환했습니다.

@@ -1 +1,2 @@ 이것은 Git diff 기능의 예입니다.+이 줄을 파일에 추가했습니다.

첫 번째 줄은 파일의 변경 사항을 요약한 것입니다. 이것은 두 번째 줄(2)에서 시작하여 파일(+1)에 한 줄의 코드를 추가했음을 알려줍니다.

그런 다음 변경 사항 목록이 표시됩니다. 보시다시피 "We have just added this line to our file." 줄을 추가했기 때문에 해당 줄이 diff에 나타납니다. 더하기 기호는 해당 행을 파일에 추가했음을 알려줍니다.

결론

Diffing은 Git 저장소의 두 파일, 분기 또는 커밋을 비교할 수 있는 Git의 유용한 기능입니다. 이를 통해 저장소의 특정 지점 이후에 어떤 변경 사항이 적용되었는지 확인할 수 있습니다.

이 튜토리얼에서는 Git을 사용한 diff의 기본 사항과 git diff 명령을 사용하여 diff 작업을 수행하는 방법에 대해 설명했습니다. 이제 전문가처럼 git diff 명령을 사용하는 데 필요한 지식을 갖추게 되었습니다!

Git에 대한 더 많은 학습 리소스는 Git 학습 방법 가이드를 확인하세요.