페이지 트리

이 페이지는 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

  • 레이블 없음