소개
이 랩에서는 Git 저장소에 스테이징된 변경 사항이 있는지 확인하는 방법을 배우게 됩니다. git status 명령을 사용하여 스테이징된 파일을 확인하고, 수정, 스테이징, 추적되지 않은 파일을 포함하여 저장소의 현재 상태를 나타내는 출력을 이해할 것입니다.
또한, git diff --cached를 사용하여 현재 스테이징 영역에 있는 특정 변경 사항을 검사하여 저장소 내에서 스테이징된 변경 사항과 스테이징되지 않은 변경 사항 간의 차이점을 확인할 수 있습니다.
git status 를 사용하여 스테이징된 파일 보기
이 단계에서는 git status 명령을 다시 사용하여 파일을 추가한 후 Git 이 변경 사항을 어떻게 추적하는지 살펴보겠습니다.
먼저, my-time-machine 디렉토리에 있는지 확인합니다. 그렇지 않은 경우, cd 명령을 사용합니다.
cd ~/project/my-time-machine
이제 notes.txt라는 새 파일을 만들고 내용을 추가해 보겠습니다.
echo "Ideas for the future" > notes.txt
이 명령은 지정된 텍스트로 notes.txt 파일을 생성합니다.
다음으로, Git 에게 이 새 파일을 추적하라고 알려주겠습니다. 이를 위해 git add 명령을 사용합니다.
git add notes.txt
이 명령은 notes.txt를 스테이징 영역에 추가합니다. 스테이징 영역은 커밋하기 전에 변경 사항을 위한 대기실과 같습니다.
이제 git status를 사용하여 저장소의 상태를 확인해 보겠습니다.
git status
다음과 유사한 출력을 볼 수 있습니다.
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: notes.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
message.txt
이제 출력에서 "Changes to be committed" 아래에 notes.txt가 표시되는 것을 확인하세요. 이는 파일이 스테이징 영역에 있으며 다음 커밋에 포함될 준비가 되었음을 의미합니다.
이전 단계에서 message.txt에 대한 변경 사항을 아직 커밋하지 않았기 때문에 "Untracked files" 아래에 message.txt가 나열될 수도 있습니다. Git 은 다음 커밋을 위해 추적되지 않은 변경 사항이 작업 디렉토리에 아직 있음을 보여줍니다.
git status의 출력을 이해하는 것은 매우 중요합니다. 저장소의 현재 상태를 알려주며, 수정된 파일, 커밋을 위해 스테이징된 파일, 추적되지 않은 파일을 보여줍니다. 이는 작업을 추적하고 다음 저장 지점에 무엇을 포함할지 결정하는 데 도움이 됩니다.
git diff --cached 로 변경 사항 확인
이 단계에서는 git diff --cached 명령을 사용하여 현재 스테이징 영역에 있는 정확한 변경 사항을 확인하는 방법을 배우겠습니다.
이전 단계에서 notes.txt를 스테이징 영역에 추가했음을 기억하세요. 이제 Git 이 커밋할 준비가 된 변경 사항을 살펴보겠습니다.
~/project/my-time-machine 디렉토리에 있는지 확인합니다.
cd ~/project/my-time-machine
이제 다음 명령을 실행합니다.
git diff --cached
다음과 유사한 출력을 볼 수 있습니다.
diff --git a/notes.txt b/notes.txt
new file mode 100644
index 0000000..a1b2c3d
--- /dev/null
+++ b/notes.txt
@@ -0,0 +1 @@
+Ideas for the future
이 출력은 스테이징 영역과 마지막 커밋 간의 차이점을 보여줍니다. notes.txt를 처음 스테이징하는 것이므로 Git 은 이를 새 파일로 표시합니다.
출력을 자세히 살펴보겠습니다.
diff --git a/notes.txt b/notes.txt: 이 줄은notes.txt파일의 두 버전을 비교하고 있음을 나타냅니다.new file mode 100644: 이는notes.txt가 새 파일임을 보여줍니다.index 0000000..a1b2c3d: 파일 내용에 대한 내부 Git 식별자입니다.--- /dev/null: 파일이 추가되기 전의 "비어 있는" 상태를 나타냅니다.+++ b/notes.txt: 스테이징 영역에서 파일의 현재 상태를 나타냅니다.@@ -0,0 +1 @@: 변경된 줄을 나타내는 헤더입니다.-0,0은 원래 (비어 있는) 상태에 줄이 없음을 의미하고,+1은 새 상태에 한 줄이 추가되었음을 의미합니다.+Ideas for the future: 더하기 기호+는 이 줄이 추가되었음을 나타냅니다.
git diff --cached 명령은 커밋하기 전에 스테이징된 변경 사항을 검토하는 데 매우 유용합니다. 프로젝트 기록에 저장하려는 내용을 정확하게 다시 확인할 수 있습니다. 이는 원치 않는 변경 사항을 실수로 커밋하는 것을 방지하는 데 도움이 됩니다.
diff 보기를 종료하고 명령줄로 돌아가려면 q를 누르세요.
스테이징된 변경 사항과 스테이징되지 않은 변경 사항 비교 확인
이 단계에서는 Git 이 이미 추적하고 있는 파일을 수정하여 스테이징된 변경 사항과 스테이징되지 않은 변경 사항의 차이점을 더 자세히 살펴보겠습니다.
먼저, ~/project/my-time-machine 디렉토리에 있는지 확인합니다.
cd ~/project/my-time-machine
이제 notes.txt 파일에 다른 줄을 추가해 보겠습니다. >>와 함께 echo 명령을 사용하여 기존 파일에 텍스트를 추가할 수 있습니다.
echo "Another idea" >> notes.txt
이 명령은 "Another idea" 줄을 notes.txt의 끝에 추가합니다.
저장소의 상태를 다시 확인해 보겠습니다.
git status
다음과 유사한 출력을 볼 수 있습니다.
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: notes.txt
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: notes.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
message.txt
notes.txt가 이제 두 섹션에 나타나는 것을 확인하세요.
- Changes to be committed (커밋할 변경 사항): 이는 이전 단계에서 스테이징 영역에 추가한
notes.txt의 버전 ( "Ideas for the future"만 포함) 을 나타냅니다. - Changes not staged for commit (커밋을 위해 스테이징되지 않은 변경 사항): 이는 방금
notes.txt에 적용한 변경 사항 ("Another idea" 추가) 을 나타냅니다. 이러한 변경 사항은 작업 디렉토리에 있지만 아직 스테이징 영역에 추가되지 않았습니다.
이는 Git 의 핵심 개념입니다. 스테이징 영역은 다음 커밋을 위해 준비된 변경 사항의 스냅샷을 보관하는 반면, 작업 디렉토리는 아직 스테이징되지 않은 변경 사항을 포함하여 파일의 현재 상태를 포함합니다.
작업 디렉토리와 스테이징 영역의 차이점을 확인하려면 옵션 없이 git diff 명령을 사용할 수 있습니다.
git diff
이렇게 하면 스테이징되지 않은 변경 사항이 표시됩니다. "Another idea" 줄이 추가된 것을 보여주는 출력을 볼 수 있습니다.
스테이징 영역과 마지막 커밋 간의 차이점 (이전 단계에서 확인) 을 보려면 git diff --cached를 사용합니다.
스테이징된 변경 사항과 스테이징되지 않은 변경 사항의 차이점과 git status 및 git diff를 사용하여 이를 확인하는 방법을 이해하는 것은 Git 을 효과적으로 사용하는 데 필수적입니다. 이를 통해 각 커밋에 포함되는 내용을 정확하게 제어할 수 있습니다.
요약
이 랩에서는 Git 저장소에 스테이징된 변경 사항이 있는지 확인하는 방법을 배웠습니다. 먼저, git status 명령을 사용하여 스테이징 영역에 추가된 파일을 포함하여 저장소의 현재 상태를 확인했습니다. git status가 어떤 파일이 "Changes to be committed (커밋할 변경 사항)"인지 명확하게 나타내는 것을 확인했습니다.
다음으로, git diff --cached 명령을 사용하여 스테이징된 변경 사항과 마지막 커밋 간의 차이점을 구체적으로 살펴보았습니다. 이를 통해 커밋할 준비가 된 정확한 내용 수정 사항을 확인할 수 있었습니다. 마지막으로, 스테이징된 변경 사항과 스테이징되지 않은 변경 사항의 구분을 강화하여 git status가 개요를 제공하는 반면 git diff --cached는 스테이징된 변경 사항의 자세한 내용을 보여준다는 것을 이해했습니다.



