git diff
파일의 변경 내용을 전/후 비교해볼 수 있는 명령어이다.
Git에서는 원격과 merge되기까지 여러 단계를 거쳐 간다.
※ [Git] 영역 (Working Directory / Index / Repository / Stash)
어떤 파일이 추적되고 있는지는 git status 로도 가능하지만
그렇기에 특정 파일 혹은 시점을 어떤 대상과 비교하고 싶은가에 따라 git diff 다양하게 확인할 수 있다.
Working Directory와 Index 영역 비교
(Working Directory ↔ Staging Area)
현재 Staged 된 수정사항만 비교
(Staging Area ↔ Local Repository)
git diff --staged
마지막 커밋과 현재 수정사항 비교
(Working Directory + Staging Area ↔ 마지막 Commit)
Commit 간 비교
마지막 커밋과 그 이전 커밋 비교
로컬 Branch간 비교
Local과 Remote 내용 비교
※ 주의 할 점은 Untracking 파일은 비교에서 제외된다
(Untracking 파일은 최초 생성 후 한번도 add되지 않아
git에서 아직 추적하지 못하는 파일이라고 보면 된다.)
시뮬레이션
결과 분석을 확인하기 위해서 원격에서 최신 버전 git pull
① push 하고, 아직 원격 master에 merge 하지 않았다.
② Commit 처리 O, Push 처리 X
③ Commit 처리 O, Push 처리 X
④ add 처리 O, Commit 처리 X
⑤ add 처리 O, Commit 처리 X
⑥ 소스 코드 내용 변경 및 저장 O, Add 처리 X
※ 그림으로 표현하면 아래에 위치에 해당한다.
- push하고 merge 하지 않은 상태이기 때문에 ①의 위치를 위와 같이 표현
- ②, ③은 각각 Commit 처리 (Commit Message도 따로 존재)
- ④, ⑤도 각각 Add 처리하긴 하였다.
Working Directory와 Index 영역 비교
(Working Directory ↔ Staging Area)
- add 기준으로 해서 전/후를 비교해준다.
(add 이후 단계인 commit, push도 이미 포함되어 있다.)
- Unstaged 내용만 확인한다고 볼 수 있다.
현재 Staged 된 수정사항만 비교
(Staging Area ↔ Local Repository)
Working Directory에만 있는 내용과 Commit 된 내용 비교
즉, add하고 commit하지 않은 내용과 최근까지 Commit 된 내용 비교
특정 파일만 확인하고 싶은 경우에는 파일명을 명시하면 된다.
git diff --staged 로도 가능하다.
마지막 커밋과 현재 수정사항 비교
(Working Directory + Staging Area ↔ 마지막 Commit)
Staging Area(After Add) & Working Directory (Before Add)에 있는 내용이 포함되어 비교된다.
마지막 Commit 이후로 변경사항을 확인할 수 있다.
Commit 간 비교
두번째 Commit 하고 세번째 Commit을 비교되는 것을 확인할 수 있다.
여기서 Staging Area (Add 한 후)나 Woking Directory에 있는 내용은 비교되지 않는 것을 확인할 수 있다.
마지막 커밋과 그 이전 커밋 비교
HEAD는 현재 Commit을 가르키고 있다.
따라서 이전 Commit은 "HEAD^"로 표현할 수 있다.
인자를 반대로 주면 아래와 같이 표시된다.
마지막 Commit과 2 단계 이전 Commit 비교하는 경우에는 "HEAD^^" 이용
Commit 버전간 비교는 git log -p 를 이용할 수도 있다.
로컬 Branch간 비교
Add 까지는 diff 되지 않고
Commit 까지 처리된 내용까지 diff 되는 것을 확인할 수 있다.
Local과 Remote 내용 비교
Add 까지는 diff 되지 않고
Commit 까지 처리된 내용까지 diff 되는 것을 확인할 수 있다.
(Local Repository에 저장된 것을 비교한다고 볼 수 있다.)
※ 원격 별칭 "origin"은 정하기 나름이다.
📌 Git 목록
'Git' 카테고리의 다른 글
[Git 깃] git log 탈출하기 (0) | 2021.03.13 |
---|---|
💻 [Git 깃] 특정 Commit 수정 하기 (0) | 2021.03.13 |
[Git 깃] git clean (0) | 2021.03.13 |
[Git 깃] git add (0) | 2021.03.13 |
[Git 깃] git status (0) | 2021.03.13 |
댓글