워킹 디렉터리와 Staging Area 의 차이점 보기
파일의 단순 변경 내역이 아닌 어떤 내용이 변경되었는지 차이점을 알기 위해서는 git diff 명령어를 사용해야 합니다. git status 명령어로는 파일의 상태정도만 (Staged인지 Untstaged인지) 알 수 있지만 git diff 명령을 사용하면 조금 더 자세한 변경 내용을 알 수 있습니다.

git diff 명령은 워킹 디렉터리와 Staging Area 사이의 비교가 가능할 뿐만 아니라 Staing Area와 Commit된 내역 사이의 비교 또한 가능합니다. 다음의 실습을 통해 사용법을 알아보겠습니다.


다음은 방금 막 생성한 Git 저장소이며, README 파일을 하나 생성합니다.
$ echo '이것은 README 파일' >> README

$ cat README
이것은 README 파일


그리고 이것을 git add 명령을 통해 Staging Area에 추가합니다.
$ git add README

$ git status -s
A  README


이후 다시 워킹 디렉터리에 있는 README 파일을 수정합니다.
'추가 내용' 이라는 문자열을 README 파일에 추가해 주었습니다.
$ echo '추가 내용' >> README

$ cat README
이것은 README 파일
추가 내용


지금 상황을 보자면 Staing Area에 최초 작성된 README 파일이 있고, 이후에 추가 수정된 README 파일이 워킹 디렉터리에 있습니다.
$ git status -s
AM README



이제 git diff 명령을 통해 이 둘 사이의 내용을 비교합니다.
+추가 내용 이 추가되었다는 사실을 알 수 있습니다. 
$ git diff
diff --git a/README b/README
index f7d20db..5c77849 100644
--- a/README
+++ b/README
@@ -1 +1,2 @@
 이것은 README 파일
+추가 내용





저장소에 Commit 한 내용과 Staging Area 사이를 비교하기
만약 이미 Commit 한 Git 저장소의 내용과 Staging Area에 등록한 내용의 차이를 비교하려면 git diff -staged 옵션을 사용합니다.


임의의 파일을 새로 생성합니다.
$ echo '최초 내용' >> myFile

$ cat myFile
최초 내용


이것을 저장소에 Commit 합니다.
$ git add myFile

$ git commit -m 'myFile 커밋입니다.'
[master (root-commit) ba6b37a] myFile 커밋입니다.
 2 files changed, 2 insertions(+)
 create mode 100644 README
 create mode 100644 myFile



커밋 이후에 워킹 디렉터리에서 내용을 수정합니다.
$ echo '내용 추가' >> myFile

$ cat myFile
최초 내용
내용 추가


이후 다시 myFile을 Staging Area에 등록합니다.
$ git add myFile



git diff --staged 옵션으로 Staging Area에 있는 myFile 과 Git 저장소에 최초 커밋된 myFile의 내용을 비교할 수 있습니다.
추가적으로 --staged 옵션과 --cached은 같은 옵션입니다.
$ git diff --staged
diff --git a/myFile b/myFile
index 98c51ab..703b770 100644
--- a/myFile
+++ b/myFile
@@ -1 +1,2 @@
 최초 내용
+내용 추가




외부 비교 도구 사용
git diff 이외에도 git difftool 명령을 통해 emerge, vimdiff 등의 도구를 사용해 비교할 수 있습니다. git difftool --tool-help 명령을 통해 사용 가능한 비교 도구를 알 수 있습니다.



출처 - https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration
블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,