이 페이지는 Git의 diff 명령의 옵션 중 두 점 (..) 과 세 점 (...)의 차이점에 대해 정리한다.
A---B---C topic / D---E---F---G master
- 커밋 A: a.txt 파일 수정
- 커밋 B: b.txt 파일 추가
- 커밋 C: c.txt 파일 삭제
- 커밋 F: f.txt 파일 변경
- 커밋 G: g.txt 파일 추가
위와 같이 커밋 이력이 발생한 경우,
두 점 (..) 또는 점 없는 옵션
master → topic
git diff master topic --name-status 또는 git diff master..topic --name-status
은 F, G 커밋을 포함한 master 브랜치와 A, B, C 커밋을 포함한 topic 브랜치 사이의 차이점을 비교한다.
즉, 결과는 master (커밋 G)를 기준으로 topic 관점에서 차이점을 나타낸다.
M a.txt
A b.txt
D c.txt
M f.txt
D g.txt
topic → master
git diff topic master --name-status 또는 git diff topic..master --name-status
은 F, G 커밋을 포함한 master 브랜치와 A, B, C 커밋을 포함한 topic 브랜치 사이의 차이점을 비교한다.
즉, 결과는 topic (커밋 C)를 기준으로 master 브랜치 관점에서 차이점을 나타낸다.
M a.txt
D b.txt
A c.txt
M f.txt
A g.txt
세 점 (...) 옵션
master → topic
git diff master...topic --name-status
은 master 브랜치와 topic 브랜치의 가장 최근 공통 커밋을 기준으로 topic 브랜치 관점에서 차이점을 비교한다.
즉, 결과는 커밋 E를 기준으로 topic 브랜치 (커밋 C) 관점에서 차이점을 나타낸다.
M a.txt
A b.txt
D c.txt
topic → master
git diff topic...master --name-status
은 topic 브랜치와 master 브랜치의 가장 최근 공통 커밋을 기준으로 master 브랜치 관점에서 차이점을 비교한다.
즉, 결과는 커밋 E를 기준으로 master 브랜치 (커밋 G) 관점에서 차이점을 나타낸다.
M f.txt
A g.txt