본문 바로가기
Git

[Git 깃] git diff

by 까망 하르방 2021. 3. 13.
반응형

git diff

파일의 변경 내용을 전/후 비교해볼 수 있는 명령어이다.

Git에서는 원격과 merge되기까지 여러 단계를 거쳐 간다.

※ [Git] 영역 (Working Directory / Index / Repository / Stash)

어떤 파일이 추적되고 있는지는 git status 로도 가능하지만

그렇기에 특정 파일 혹은 시점을 어떤 대상과 비교하고 싶은가에 따라 git diff 다양하게 확인할 수 있다.

 

Working Directory와 Index 영역 비교
(Working Directory  Staging Area)

git diff

 

현재 Staged 된 수정사항만 비교
(Staging Area 
 Local Repository)

git diff --cached
git diff --staged

 

마지막 커밋과 현재 수정사항 비교
(Working Directory + Staging Area
↔ 마지막 Commit)

git diff HEAD

 

Commit 간 비교

git diff {Commit Hash 1} {Commit Hash 2}

 

마지막 커밋과 그 이전 커밋 비교

git diff HEAD HEAD^

 

로컬 Branch간 비교

git diff {branch명} {다른 branch명}

 

Local과 Remote 내용 비교

git diff origin/{branch명} {branch명}

 

※ 주의 할 점은 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)

git diff

- add 기준으로 해서 전/후를 비교해준다.

  (add 이후 단계인 commit, push도 이미 포함되어 있다.)

- Unstaged 내용만 확인한다고 볼 수 있다.

 

현재 Staged 된 수정사항만 비교
(Staging Area 
 Local Repository)

git diff --cached

Working Directory에만 있는 내용과 Commit 된 내용 비교

즉, add하고 commit하지 않은 내용과 최근까지 Commit 된 내용 비교

특정 파일만 확인하고 싶은 경우에는 파일명을 명시하면 된다.

git diff --cached {File Name}

 

git diff --staged 로도 가능하다.

 

마지막 커밋과 현재 수정사항 비교
(Working Directory + Staging Area
↔ 마지막 Commit)

git diff HEAD

Staging Area(After Add) & Working Directory (Before Add)에 있는 내용이 포함되어 비교된다.

마지막 Commit 이후로 변경사항을 확인할 수 있다.

 

Commit 간 비교

git diff {Commit Hash 1} {Commit Hash 2}

두번째 Commit 하고 세번째 Commit을 비교되는 것을 확인할 수 있다.

여기서 Staging Area (Add 한 후)나 Woking Directory에 있는 내용은 비교되지 않는 것을 확인할 수 있다.

 

마지막 커밋과 그 이전 커밋 비교

git diff HEAD HEAD^

HEAD는 현재 Commit을 가르키고 있다.

따라서 이전 Commit은 "HEAD^"로 표현할 수 있다.

 

인자를 반대로 주면 아래와 같이 표시된다.

 

마지막 Commit과 2 단계 이전 Commit 비교하는 경우에는 "HEAD^^" 이용

 

Commit 버전간 비교는 git log -p 를 이용할 수도 있다.

git log -p

 

로컬 Branch간 비교

git diff {branch명} {다른 branch명}

Add 까지는 diff 되지 않고

Commit 까지 처리된 내용까지 diff 되는 것을 확인할 수 있다.

 

Local과 Remote 내용 비교

git diff origin/{branch명} {branch명}

Add 까지는 diff 되지 않고

Commit 까지 처리된 내용까지 diff 되는 것을 확인할 수 있다.

(Local Repository에 저장된 것을 비교한다고 볼 수 있다.)

※ 원격 별칭 "origin"은 정하기 나름이다.

 

 

📌 Git 목록

 

[까망] Git 목록

본 블로그에 작성된 Git 관련 내용 URL을 정리한 곳입니다. 목록 [Git] "git add -p" 를 활용하는 이유 [Git] .gitignore 설정 [Git] learngitbranching 답안 및 풀이 - 1 [Git] learngitbranching 답안 및 풀이 -..

zoosso.tistory.com

반응형

'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

댓글