워킹 디렉터리와 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
'깃(Git)' 카테고리의 다른 글
[Git] git rm 명령으로 파일 삭제하기 (1) | 2018.04.25 |
---|---|
[Git] git commit 명령어를 통한 변경사항 커밋하기 (0) | 2018.04.25 |
[Git] Windows 환경 Git에서 줄바꿈 문자(CRLF) 관련 설정 (0) | 2018.04.21 |
[Git] .gitignore 설정으로 파일 무시하기 (0) | 2018.04.21 |
[Git] Git 상태 확인하기 - git status 명령어 및 상태 파헤치기! (0) | 2018.04.20 |