git diff 명령어 정리


  • git diff 대해서 공부하고 정리한 글입니다

  • git diff

    • git status를 통해서 파일의 상태를 확인할 수 있지만 어떠한 내용이 변경되었는지 알 수 없다

    • 하지만 git diff를 통해서 워킹디렉토리와, staginga area에서 어떤 파일의 내용이 수정되었는지를 확인할 수 있다

    • 아무런 옵션이 없으면 워킹 디렉토리에 있는 것만 비교를 해준다


$ echo hello world > c.txt
$ echo styling > style.css

$ git add .

# c.txt 파일에 add라는 문자열 추가
$ echo add >> c.txt

# git diff 명렁어 수행하면 아래와 같은 결과 나온다
$ git diff

---
diff --git a/c.txt b/c.txt # 이전 버전의 a/c.txt와 현재버전 b/c.txt를 비교한다
index a042389..f5be8ac 100644 # index는 git 내부적으로 파일을 참고할 때 쓰인다
--- a/c.txt # -는 이전 파일을 의미한다 
+++ b/c.txt
@@ -1 +1,2 @@ 
hello world! # hello world는 이전 파일의 첫번째 줄에서 나온 것
+add # 새로 변경된 사항은 첫번째 줄에서 두번째 줄까지
---

# a는 이전 버전을 의미한다
# 이전 버전이라는 것이 워킹 디렉토리에 있는 파일이라면 이전에 커밋된 버전을 의미하고
# staging area에 변경된 내용이 있다면 이전에 staging area에 있던 것과 비교해준다

# -는 이전 파일을 의미한다
# +1, 2은 새로운 파일의 두번째 줄 까지 확인하라는 뜻
# 기존의 hello word가 있던 상태에서 add가 추가되었다는 뜻이다
  • git diff를 사용하면 워킹디렉토리에 있는 변경사항들만 확인할 수 있다

  • --staged 옵션을 사용하면 staging area에서 비교사항을 확인할 수 있다

  • 즉, staginga area의 최신 커밋과 이전 커밋을 비교할 수 있는 것이다

# staging area있는 것을 확인하고 싶으면 아래 명령어를 실행하고 다음과 같은 결과 나온다
$ git diff --staged

---
diff --git a/c.txt b/c.txt
new file mode 100644
index 0000000..a042389 # index는 git 내부적으로 파일들을 참고할 때 쓰는 것
--- /dev/null # 이전에는 아무것도 없었는데
+++ b/c.txt # c라는 파일이 추가가 되었고
@@ -0,0 +1 @@ # 이전에는 아무것도 없었지만 새로운 파일의 첫번째 줄에
+hello world! # hello word가 추가됨
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..c8658a5
--- /dev/null # 이전에는 아무것도 없었는데
+++ b/style.css # 이전에는 아무것도 없었지만 새로운 파일의 첫번째 줄에
@@ -0,0 +1 @@ # styling가 추가됨
+styling
(base)
--

# 스테이지란 말은 보통 캐시라는 말과 동의어로 사용하는데 아래처럼 --cached 옵션을 주게되면
# 동일 하게 git diff --staged 옵션을 사용했을 때와 동일한 결과가 나온다
$ git diff --cached


# git diff의 다양한 옵션을 확인할 수 있다
$ git diff -h

# 터미널에서 이러한 내용들을 확인하기 힘들다면 텍스트 에디터와 연결해서 사용할 수 있다
# 에디터 실행 후 아래와 같은 내용 추가한다
$ git config --global -e

---
[diff]
 tool = vscode
  # difftool은 vscode를 사용한다
[difftool "vscode"]
 cmd = code --wait --diff $LOCAL $REMOTE
 # code 명령어는 --wait , --diff를 이용하고, LOCAL과 REMOTE를 비교한다

---

# 추가한 후 git difftool 실행하면 vscode 같은 에디터에서 변경된 사항을 확인할 수 있다
$ git difftool

# staging area의 변경사항을 확인할 수 있다
$ git difftool --staged


Reference









© 2020. by dkmqflx

Powered by dkmqflx