소개
이 랩에서는 git status --porcelain 명령을 사용하여 Git 저장소가 깨끗한지 효율적으로 확인하는 방법을 배우게 됩니다. 이 명령은 기계가 읽을 수 있는 출력을 제공하므로 스크립팅 및 빠른 상태 확인에 이상적입니다.
표준 git status와 --porcelain 버전의 차이점을 살펴보고, 저장소가 깨끗할 때와 추적되지 않거나 수정된 파일이 포함되어 있을 때 출력의 변화를 관찰할 것입니다. 이 실습을 통해 보류 중인 변경 사항이 프로그램적으로 없는지 확인하는 방법을 보여줍니다.
git status --porcelain 을 사용하여 청결 상태 확인
이 단계에서는 git status 명령의 유용한 변형인 git status --porcelain에 대해 알아보겠습니다. 이 명령은 스크립팅이나 추가 텍스트 없이 상태를 빠르게 확인하는 데 적합한 깨끗하고 기계가 읽을 수 있는 출력을 제공합니다.
먼저, 프로젝트 디렉토리에 있는지 확인해 보겠습니다. 터미널을 열고 다음을 입력합니다.
cd ~/project/my-time-machine
이제 표준 git status 명령을 다시 실행하여 저장소의 현재 상태를 확인합니다. 이전 단계에서 커밋을 했으므로 깨끗해야 합니다.
git status
작업 디렉토리가 깨끗함을 나타내는 다음과 유사한 출력을 볼 수 있습니다.
On branch master
nothing to commit, working tree clean
이제 porcelain 버전을 시도해 보겠습니다.
git status --porcelain
저장소가 깨끗하면 이 명령은 출력을 생성하지 않아야 합니다. 이것이 핵심적인 차이점입니다. 추적되지 않거나, 수정되었거나, 스테이징된 파일에 대해서만 출력을 표시합니다. 따라서 보류 중인 변경 사항이 있는지 빠르게 확인하는 데 매우 유용합니다.
이것이 왜 유용할까요? 어떤 작업을 수행하기 전에 커밋되지 않은 변경 사항이 있는지 알아야 하는 스크립트를 작성한다고 가정해 보겠습니다. 일반 git status 출력을 구문 분석하는 것은 사람이 읽도록 설계되었기 때문에 까다로울 수 있습니다. --porcelain 출력은 스크립트를 위해 설계되었으므로 프로그램 방식으로 변경 사항을 쉽게 확인할 수 있습니다.
다음 단계에서는 추적되지 않거나 수정된 파일이 있을 때 출력이 어떻게 변경되는지 살펴보겠습니다.
추적되지 않거나 수정된 파일 없음 확인
이 단계에서는 git status --porcelain 명령이 저장소가 깨끗할 때 출력을 생성하지 않는지 명시적으로 확인합니다. 이 명령이 변경 사항만 표시하도록 설계되었음을 강조합니다.
먼저, 올바른 디렉토리에 있는지 확인합니다.
cd ~/project/my-time-machine
이제 git status --porcelain 명령을 다시 실행합니다. 마지막 커밋 이후 변경 사항이 없으므로 출력이 없어야 합니다.
git status --porcelain
이 명령을 실행한 후 터미널에 출력이 표시되지 않으면 작업 디렉토리가 깨끗하고 추적되지 않거나 수정된 파일이 없다는 의미입니다. 이는 --porcelain 플래그를 사용할 때 깨끗한 저장소의 예상 동작입니다.
이러한 출력 부재는 Git 이 추적하거나 커밋해야 하는 새롭거나 변경된 사항을 감지하지 못한다는 명확한 신호입니다. 새로운 변경 사항을 만들거나 다른 Git 작업을 수행하기 전에 깨끗한 상태에서 시작하고 있는지 확인하는 빠르고 효율적인 방법입니다.
다음 단계에서는 --porcelain 출력이 어떻게 변경되는지 확인하기 위해 몇 가지 변경 사항을 도입할 것입니다.
다양한 저장소 상태로 테스트
이 단계에서는 git status --porcelain이 어떻게 보고하는지 확인하기 위해 저장소에서 몇 가지 변경 사항을 만들 것입니다. 이를 통해 porcelain 출력에 사용되는 다양한 코드를 이해하는 데 도움이 됩니다.
먼저, 올바른 디렉토리에 있는지 확인합니다.
cd ~/project/my-time-machine
이제 추적되지 않은 새 파일을 만들어 보겠습니다. notes.txt라고 부르겠습니다.
echo "Some random notes" > notes.txt
git status --porcelain을 다시 실행합니다.
git status --porcelain
이제 다음과 유사한 출력을 볼 수 있습니다.
?? notes.txt
??는 notes.txt가 추적되지 않은 파일임을 나타냅니다. Git 은 파일을 인식하지만 현재 해당 버전을 관리하지 않습니다.
다음으로, 이전에 커밋한 message.txt 파일을 수정해 보겠습니다. 여기에 다른 줄을 추가하겠습니다.
echo "Hello again, Future Me" >> message.txt
>> 연산자는 텍스트를 덮어쓰는 대신 기존 파일에 추가합니다.
이제 git status --porcelain을 한 번 더 실행합니다.
git status --porcelain
다음과 유사한 출력을 볼 수 있습니다.
M message.txt
?? notes.txt
M은 message.txt가 수정되었음을 나타냅니다. M 앞의 공백은 변경 사항이 작업 디렉토리에 있지만 아직 스테이징되지 않았음을 의미합니다. notes.txt는 여전히 추적되지 않았기 때문에 ??로 남아 있습니다.
마지막으로, git add를 사용하여 수정된 message.txt 파일을 스테이징해 보겠습니다.
git add message.txt
그리고 git status --porcelain을 마지막으로 한 번 실행합니다.
git status --porcelain
이제 출력은 다음과 같아야 합니다.
M message.txt
?? notes.txt
이제 M이 첫 번째 열에 있어 message.txt가 커밋을 위해 스테이징되었음을 나타냅니다. 두 번째 열의 공백은 스테이징된 이후 작업 디렉토리에 더 이상의 수정 사항이 없음을 의미합니다. notes.txt는 여전히 추적되지 않았습니다.
이러한 코드 (추적되지 않은 파일의 ??, 수정되었지만 스테이징되지 않은 파일의 두 번째 열의 M, 스테이징된 수정 사항의 첫 번째 열의 M) 를 이해하는 것은 git status --porcelain 출력을 빠르게 해석하는 데 중요합니다.
요약
이 랩에서는 git status --porcelain 명령을 사용하여 Git 저장소가 깨끗한지 확인하는 방법을 배웠습니다. 이 명령이 기계가 읽을 수 있는 출력을 제공하며, 작업 디렉토리가 깨끗할 때는 비어 있다는 것을 알게 되었습니다. 이는 깨끗한 경우에도 사람이 읽을 수 있는 정보를 제공하는 표준 git status 출력과 대조됩니다.
우리는 깨끗한 저장소에서 git status --porcelain을 실행하는 연습을 했고, 출력이 없음을 확인하여 스크립팅 및 보류 중인 변경 사항에 대한 빠른 확인에 유용함을 확인했습니다.



