[Git] 깃 diff
깃 diff에 대하여 알아보자
소개
git diff
는 Git에서 변경 사항을 확인하는 데 사용하는 명령어이다. 이 명령어는 직접적으로 Git 저장소에 영향을 주지 않고, 단순히 변경된 내용에 대한 정보만 제공한다. 변경 사항을 커밋하기 전에 어떤 내용이 변경되었는지 확인하거나, 서로 다른 커밋, 브랜치 간의 차이를 비교할 때 유용하다.
Git Diff 출력 해석하기
git diff
명령어를 실행하면 다음과 같은 형식의 출력을 볼 수 있다:
diff --git a/abc.txt b/abc.txt
index 015e433..9ce8efb 100644
--- a/abc.txt
+++ b/abc.txt
@@ -2,8 +2,7 @@ aaa
bbb
ccc
ddd
-kkk
+eee
fff
ggg
hhh
-iii
이 출력의 각 부분을 해석해보자:
-
비교 대상 파일:
diff --git a/abc.txt b/abc.txt
- 첫 줄은 비교 대상이 되는 두 파일을 나타낸다. a는 변경 전 파일, b는 변경 후 파일이다.
-
파일 메타데이터:
index 015e433..9ce8efb 100644
- 이 줄은 파일의 메타데이터를 포함하며, 주로 내부적으로 사용되는 정보이다.
-
파일 표시:
--- a/abc.txt
및+++ b/abc.txt
- 변경 전 파일(---)과 변경 후 파일(+++)을 구분한다.
-
변경 위치 정보:
@@ -2,8 +2,7 @@ aaa
@@ -2,8 +2,7 @@
는 변경된 부분의 위치를 나타낸다.-2,8
은 원본 파일에서 2번 라인부터 8줄을 의미한다.+2,7
은 수정된 파일에서 2번 라인부터 7줄을 의미한다.aaa
는 해당 섹션의 시작 부분에 있는 내용의 일부를 미리 보여준다.
-
변경 내용:
- 공백으로 시작하는 줄은 양쪽 파일에서 동일한 내용이다.
-
로 시작하는 줄은 원본 파일에는 있지만 수정된 파일에서 제거된 내용이다.+
로 시작하는 줄은 원본 파일에는 없지만 수정된 파일에 추가된 내용이다.
위 예시에서는 kkk
가 eee
로 변경되었고, iii
줄이 삭제된 것을 확인할 수 있다.
다양한 Git Diff 명령어
Git에서는 다양한 상황에서 변경 사항을 비교할 수 있는 여러 형태의 diff
명령어를 제공한다.
기본 명령어
명령어 | 비교 대상 | 설명 |
---|---|---|
git diff | 작업 디렉토리 ↔ 인덱스 | 아직 git add 하지 않은 변경 사항을 확인 |
git diff HEAD | 작업 디렉토리 ↔ 최신 커밋 (HEAD) | 현재 브랜치의 최신 커밋과 비교하여 변경 사항을 확인 |
git diff --staged 또는 git diff --cached | 인덱스 ↔ 최신 커밋 (HEAD) | git add 로 스테이징한 변경 사항과 최신 커밋의 차이를 확인 |
여기서 인덱스는 스테이징 영역을 의미한다.
특정 파일 비교
특정 파일에 대한 변경 사항만 확인하고 싶다면 파일 경로를 지정하면 된다:
$ git diff HEAD <filename> # 최신 커밋과 작업 디렉토리의 특정 파일 비교
$ git diff --staged <filename> # 최신 커밋과 스테이징된 특정 파일 비교
브랜치 및 커밋 간 비교
서로 다른 브랜치나 커밋 간의 차이를 비교할 수도 있다:
$ git diff branch1..branch2 # branch1과 branch2 사이의 차이 비교
$ git diff commit1..commit2 # commit1과 commit2 사이의 차이 비교
예를 들어, main
브랜치와 feature
브랜치를 비교하려면:
$ git diff main..feature
또는 특정 커밋 간의 차이를 확인하려면:
$ git diff abc123..def456
추가 옵션
Git diff에는 다양한 추가 옵션이 있다:
-
--stat
: 변경된 파일의 통계 정보만 표시$ git diff --stat
-
--name-only
: 변경된 파일 이름만 표시$ git diff --name-only
-
--color-words
: 단어 단위로 차이를 색상으로 표시$ git diff --color-words
Git Diff 활용 시나리오
1. 작업 중인 변경 사항 확인
개발 중에 어떤 내용을 변경했는지 확인하고 싶을 때:
$ git diff
2. 커밋 전 최종 검토
변경 사항을 스테이징한 후, 커밋하기 전에 최종 검토:
$ git diff --staged
3. 특정 파일의 변경 이력 추적
특정 파일이 두 커밋 사이에 어떻게 변경되었는지 확인:
$ git diff abc123..def456 path/to/file
4. 브랜치 병합 전 차이점 확인
브랜치를 병합하기 전에 어떤 변경 사항이 병합될지 미리 확인:
$ git diff main..feature
결론
git diff
는 Git을 사용하는 개발자에게 필수적인 명령어이다. 변경 사항을 커밋하기 전에 검토하거나, 서로 다른 브랜치나 커밋 간의 차이를 비교할 때 유용하게 사용할 수 있다. 다양한 옵션을 통해 원하는 형태로 변경 사항을 확인할 수 있어, 효율적인 코드 관리와 협업에 큰 도움이 된다.
Git diff를 잘 활용하면 실수로 인한 버그를 줄이고, 코드 품질을 향상시킬 수 있다. 특히 코드 리뷰나 변경 사항을 다른 개발자에게 설명할 때 큰 도움이 된다.