2011 Dec 24

- by
Changwoo Park

git diff

Git:diff

Git은 명령어가 엄청나게 많지만, 알면 알수록 일관적인 명령어에 감탄하게 된다. (아무리 그래도 너무 많다.--;)

이 글에서는 git diff 명령어의 사용법을 간단히 정리한다.

heading image

산타와 함께 하는 틀린 그림 찾기 "Christmas In Jelly Village". 출처

Unified Format

git diff는 결과를 Unified Format으로 보여준다. 이 형식에 익숙하지 않으면 링크를 따라가 읽어보는 것이 도움될 것이다.

git diff

diff를 잘 활용하자.

Modified, Staged, Unmodified 사이 비교

Modified(Working Directory에 있는)와 Staged(Staging Area에 있는)는 다음과 같이 비교한다:

git diff

특정 파일만 비교할 수도 있다:

git diff my-file

Staged와 Unmodified(HEAD의)는 다음과 같이 비교한다:

git diff --staged/--cached

--staged--cached는 똑같다. 이것도 특정 파일만 비교할 수 있다:

git diff --staged my-file

Revision 비교

리비전 두 개를 골라 비교할 수도 있다:

git diff bd976f4 59d60f9

그중 파일 하나만 비교할 수 있다:

git diff bd976f4 59d60f9 my-file

다음처럼도 비교할 수도 있다:

git diff bd976f4:my-file 59d60f9:my-file

Modified, Staged와 Revision 비교

Working Directory에 있거나 Staging Area에 수정한 파일을 HEAD의 파일이 아니라 이전 커밋하고 비교할 수도 있다. Working Directory를 HEAD~18에 비교할 수 있다:

git diff HEAD~18

특정 파일만 비교할 수 있다:

git diff HEAD~18 my-file

Staging Area와 HEAD~18과 비교하려면 다음과 같이 한다:

git diff --staged HEAD~18

이때도 특정 파일만 비교하려면 다음과 같다:

git diff --staged HEAD~18 my-file

파일 이름만 보기

--name-only 옵션을 주면 관련 파일을 볼 수 있다. 다음은 해당 커밋에 수정된 파일 목록을 보여준다:

git show --name-only HEAD~4

다음은 Working Directory와 HEAD~4에서 변경된 파일 이름만 보여준다.

git diff --name-only HEAD~4

이 옵션은 git log 명령에도 사용할 수 있다. 해당 commit에 수정된 파일 이름도 같이 보여준다.

git log --name-only