기능
- 브랜치 간, 혹은 커밋 간 변경사항을 비교한다.
주의사항
- 파일 비교 시, 명령어가 실행되는 경로를 기준으로 상대경로를 입력해야 한다. (
git ls-files
에서 출력되는 경로)
참고
# 아래 세 가지(공백, .., ...) 수행 결과는 같다.
git diff $1 $2
git diff $1..$2
git diff $1...$2
형식
git diff $1..$2 # $1 -> $2로의 변경사항 비교: $1과 $2는 브랜치명 또는 커밋 해시가 될 수 있다.
git diff $1..$2 -- "파일경로" # 두 지점에서 특정 파일에 대해서만 비교
옵션
--staged # 스테이징 영역의 변경사항 출력
--cached # 위와 동일
--name-only # 변경된 파일의 이름만 출력
--name-status # 변경된 파일의 상태와 이름 출력(A: 추가, M: 수정, D: 삭제)
--stat # 각 파일마다 통계 출력(추가/변경/제거된 줄 수)
--color # 색상 추가
-u / --unified # 수정된 부분을 +/- 기호로 표시(명시하지 않아도 자동으로 사용되는 옵션)
-p / --patch # 변경사항을 실제 코드 차이로 표시(명시하지 않아도 자동으로 사용되는 옵션)
--ignore-space-change # 공백 문자 변경사항 무시
--ignore-all-space # 모든 공백 무시
예시
# 아래 세 가지 모두 untracked 파일들의 변경사항은 무시
git diff # modified 영역의 변경사항 출력
git diff --staged # 스테이징 영역의 변경사항 출력
git diff HEAD # 현재 상태와 마지막 커밋 간의 변경사항 출력(즉, modified + staged 영역 변경사항)
git diff "파일경로" # 지정한 파일의 변경사항만 출력