변경되지 않은 파일 테스트
이전 단계에서 파일이 수정되었을 때 git status와 git diff가 어떻게 작동하는지 살펴보았습니다. 하지만 변경 사항이 없을 때 이러한 명령을 실행하면 어떻게 될까요?
알아봅시다! ~/project/my-time-machine 디렉토리에 있는지 확인하십시오.
먼저, git status를 실행합니다.
git status
상태를 마지막으로 확인한 이후 변경 사항이 없으므로, message.txt가 수정되었지만 스테이징되지 않았음을 나타내는 이전과 동일한 출력이 표시되어야 합니다.
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: message.txt
no changes added to commit (use "git add" and/or "git commit -a")
이제 git diff를 다시 실행해 보겠습니다.
git diff
이전과 동일한 diff 출력이 표시되어 현재 파일과 마지막 커밋 간의 차이점을 보여줍니다.
diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
Hello, Future Me
+P.S. Hope you're doing well!
이는 git status와 git diff가 추가 변경 없이 명령을 몇 번이나 실행하든 마지막 커밋을 기준으로 작업 디렉토리의 현재 상태를 보여준다는 것을 확인합니다.
이제 git add를 사용하여 message.txt에 대한 변경 사항을 스테이징해 보겠습니다.
git add message.txt
git status를 다시 실행합니다.
git status
출력이 변경되어 이제 변경 사항이 스테이징되었음을 표시합니다.
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: message.txt
git status가 이제 "Changes to be committed"를 표시하는 것을 확인하십시오. 이는 변경 사항이 스테이징 영역에 있으며 다음 커밋을 준비하고 있음을 의미합니다.
이제 git diff는 어떨까요? 시도해 봅시다.
git diff
이번에는 git diff가 출력을 표시하지 않습니다. 왜 그럴까요? git diff를 인자 없이 실행하면 작업 디렉토리를 스테이징 영역과 비교하기 때문입니다. 방금 변경 사항을 스테이징 영역에 추가했으므로 작업 디렉토리와 스테이징 영역이 동일합니다.
스테이징 영역과 마지막 커밋 간의 차이점을 보려면 git diff --staged를 사용합니다. 시도해 봅시다.
git diff --staged
이렇게 하면 현재 스테이징 영역에 있는 변경 사항, 즉 우리가 추가한 줄의 diff 가 표시됩니다.
diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
Hello, Future Me
+P.S. Hope you're doing well!
git diff (작업 디렉토리 vs. 스테이징 영역) 와 git diff --staged (스테이징 영역 vs. 마지막 커밋) 의 차이점을 이해하는 것은 Git 의 핵심 개념입니다. 커밋하기 전에 변경 사항을 관리하는 데 도움이 됩니다.
diff 보기가 나타나면 q를 눌러 종료하십시오.