diff 명령어
이전 포스팅에서 git diff HEAD와 git diff에 대해 잠시 언급을 했습니다.
diff 명령어는 커밋이나 브랜치 사이에 다른 점 또는 수정 이력을 비교해 볼 때 사용할 수 있습니다.
먼저 $ git diff 에 대해 알아보겠습니다.
git diff는 워킹 디렉토리와 스테이지 간 차이를 확인하는 것이며 다음과 같이 사용합니다.
# 워킹 디렉토리와 스테이지 비교
$ git diff
그림으로 나타내면 다음과 같다고 할 수 있습니다.
가령, filea.html 파일을 수정하고 스테이지에 올린 상태라면,
이 상태는 워킹 디렉토리와 스테이지에 있는 filea.html의 내용은 같아집니다.
이때, 다음과 같이 git diff를 해 보면 아무런 내용이 없습니다.
차이가 없기 때문입니다.
스테이지에 올라가 있는 상태에서 filea.html을 수정하게 되면 차이가 발생합니다.
실제 이와 같은 상황은 git status 로 확인하면 다음과 같습니다.
스테이지(초록색 글씨)에도 수정되어 올라가 있고,
워킹 디렉토리(빨간색 글씨)에도 수정되어 있음을 알 수 있습니다.
이러한 상태를 소스트리에서 확인하면
다음과 같이 스테이지에 올라간 파일 영역에도
스테이지에 올라가지 않은 파일 영역에도 존재하게 됩니다.
diff 명령어 활용법 알아보기
예를 들어, Git의 각 영역(워킹디렉토리, 스테이지, 저장소)에서
filea.html 파일의 내용이 다음과 같다고 합시다.
이 내용을 토대로 실제 실행 화면을 통해 diff 명령어의 활용 방법을 확인해 보겠습니다.
워킹디렉터리와 스테이지간의 차이 확인
이런 경우 $ git diff로 확인해 보면 다음과 같이 차이점을 출력합니다.
워킹디렉터리와 커밋 HEAD 간의 차이 확인
다음으로 $ git diff HEAD 에 대해 알아보겠습니다.
$ git diff HEAD는 워킹 디렉터리의 내용과 커밋 HEAD의 차이점을 보여줍니다.
# 워킹 디렉토리의 내용과 커밋 HEAD의 차이점 확인
$ git diff HEAD
그림으로 나타내면 다음과 같다고 할 수 있습니다.
$ git diff HEAD를 실행한 실제 화면은 다음과 같습니다.
스테이지의 내용과 저장소의 커밋 HEAD의 차이 확인
또, 스테이지의 내용과 저장소의 커밋 HEAD의 차이도 확인할 수 있습니다.
$ git diff --staged를 실행한 실제 화면은 다음과 같습니다.
특정 파일에 대한 차이 확인
지금까지 diff 명령어를 사용해 본 것은
저장소에 filea.html 파일 하나만 있기 때문에 간략하게 확인이 가능했습니다.
하지만, 실제 개발을 할 경우에는
여러 개의 파일을 작업하게 되는데,
특정 파일에 대한 변경 사항만 확인하고 싶은 경우가 있습니다.
이럴 경우, 다음과 같이 사용합니다.
# 특정 파일에 대한 변경 사항 확인
$ git diff [옵션] [파일명]
예를 들어, filea.html 파일을 스테이지와 저장소의 커밋 HEAD 간의 차이를 확인하고 싶은 경우
$ git diff --staged filea.html이라고 하면 됩니다.
브랜치와 브랜치, 커밋 간 차이 확인
또한 브랜치와 브랜치간의 변경 사항도 확인할 수 있습니다.
브랜치에 대해서는 아직 설명하지 않았습니다만, 알아 두면 좋겠습니다.
# 브랜치 간의 변경 사항 확인
$ git diff [브랜치1]..[브랜치2]
# 또는
$ git diff [브랜치1] [브랜치2]
이러한 방식으로 커밋간 변경 사항 확인도 가능합니다.
# 커밋 간의 변경 사항 확인
$ git diff [커밋ID]..[커밋ID]
# 또는
$ git diff [커밋ID] [커밋ID]
이상과 같이 diff 명령어를 통해 Git의 영역 간, 파일 간 차이를 쉽게 파악할 수 있음을 알 수 있습니다.
감사합니다.
'코딩해보니 > Git' 카테고리의 다른 글
[Git_27] 브랜치(Branch) 만들기 (0) | 2022.12.27 |
---|---|
[Git_26] 브랜치(Branch) 개념 (0) | 2022.12.26 |
[Git_24] 커밋 수정하기 --amend 옵션 사용하기 (0) | 2022.12.23 |
[Git_23] 커밋 되돌리기 - 리버트(revert) (0) | 2022.12.21 |
[Git_22] 커밋 취소하기 : reset --hard & 소스트리에서 리셋하기 (0) | 2022.12.20 |