Git Stash 적용 여부 확인 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 Git stash 가 작업 디렉토리에 성공적으로 적용되었는지 확인하는 방법을 배우게 됩니다. git stash 명령어와 저장소 상태 간의 상호 작용을 살펴보고, 적용된 변경 사항을 확인하고 적용되지 않은 stash 와 구별하는 방법을 시연합니다.

실용적인 단계를 통해 git status를 사용하여 변경 사항을 stash 하고 적용하기 전후의 작업 디렉토리 상태를 관찰합니다. 또한 git stash list를 사용하여 stash 항목을 관리하고 검사하여 stash 된 작업의 적용 상태를 자신 있게 확인할 수 있도록 합니다.

적용된 변경 사항 확인 - git status

이 단계에서는 Git 의 stash 명령어가 작업 디렉토리와 어떻게 상호 작용하는지, 그리고 stash 를 적용한 후 저장소의 상태를 확인하는 방법을 살펴보겠습니다.

먼저, 프로젝트 디렉토리에 있는지 확인해 보겠습니다. 터미널을 열고 my-time-machine 디렉토리로 이동합니다.

cd ~/project/my-time-machine

이제 새로운 파일을 만들고 커밋되지 않은 변경 사항이 있는 것처럼 시뮬레이션하기 위해 일부 내용을 추가해 보겠습니다.

echo "This is a new feature." > feature.txt
echo "Adding some more content." >> message.txt

이제 새로운 파일 feature.txt를 만들고 기존 message.txt를 수정했습니다. git status를 사용하여 Git 이 이러한 변경 사항을 어떻게 보는지 확인해 보겠습니다.

git status

feature.txt가 추적되지 않고 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

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        feature.txt

no changes added to commit (use "git add" and/or "git commit -a")

이제 이러한 변경 사항을 stash 해 보겠습니다. Stashing 은 현재 작업을 일시적으로 보류하여 불완전한 변경 사항을 커밋하지 않고 다른 작업으로 전환할 수 있도록 하는 것과 같습니다.

git stash save "Work in progress"

stash 가 저장되었음을 확인하는 출력을 볼 수 있습니다.

Saved working tree and index state On master: Work in progress

작업 디렉토리는 이제 해당 변경 사항을 만들지 않은 것처럼 깨끗해야 합니다. git status로 이를 확인할 수 있습니다.

git status

출력은 깨끗한 작업 디렉토리를 표시해야 합니다.

On branch master
nothing to commit, working tree clean

이제 방금 생성한 stash 를 적용해 보겠습니다. Stash 를 적용하면 stash 된 변경 사항이 작업 디렉토리로 다시 가져옵니다.

git stash apply

변경 사항이 적용되었음을 나타내는 출력을 볼 수 있습니다.

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

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        feature.txt

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9)

마지막으로, stash 를 적용한 후 작업 디렉토리의 상태를 확인하기 위해 git status를 다시 확인해 보겠습니다.

git status

출력은 stash 의 변경 사항이 이제 작업 디렉토리로 다시 돌아와 stash 하기 전과 마찬가지로 수정 및 추적되지 않은 파일로 표시됨을 보여줍니다. 이는 git stash apply가 자동으로 스테이징하거나 커밋하지 않고 변경 사항을 다시 가져온다는 것을 확인합니다.

git stash list 실행하여 확인

이 단계에서는 git stash list 명령어를 사용하여 저장한 stash 목록을 보는 방법을 배우겠습니다. 이 명령어는 임시 작업을 추적하는 데 유용합니다.

여전히 ~/project/my-time-machine 디렉토리에 있는지 확인하십시오.

이전 단계에서 stash 를 만들었습니다. stash 목록에서 확인해 보겠습니다. 다음 명령을 입력하십시오.

git stash list

다음과 유사한 출력을 볼 수 있습니다.

stash@{0}: On master: Work in progress

이 출력은 하나의 stash 가 저장되었음을 보여줍니다. stash@{0}은 이 특정 stash 의 식별자입니다. 중괄호 안의 숫자는 stash 목록에서의 위치를 나타냅니다 (0 은 가장 최근). "On master"는 stash 를 만들 때 어떤 브랜치에 있었는지 알려주고, "Work in progress"는 stash 를 저장할 때 제공한 메시지입니다.

여러 개의 stash 가 있는 경우, stash@{0}이 가장 최근, stash@{1}이 그 다음으로 최근인 방식으로 여기에 나열됩니다.

git stash list 명령어는 stash 를 관리하는 데 필수적입니다. 사용 가능한 stash 를 확인하고 적용하거나 삭제하려는 stash 를 식별하는 데 도움이 됩니다.

stash 목록을 나열하는 방법을 이해하는 것은 진행 중인 작업을 관리하기 위해 stash 기능을 효과적으로 사용하는 첫 번째 단계입니다.

적용되지 않은 Stash 테스트

이 단계에서는 stash 를 적용해도 stash 목록에서 제거되지 않는다는 것을 확인합니다. 이는 git stash applygit stash pop의 중요한 차이점입니다.

여전히 ~/project/my-time-machine 디렉토리에 있는지 확인하십시오.

이전 단계에서 stash 를 생성한 다음 적용했습니다. stash 가 여전히 있는지 확인하기 위해 stash 목록을 다시 확인해 보겠습니다.

git stash list

이전과 동일한 출력을 볼 수 있습니다.

stash@{0}: On master: Work in progress

보시다시피, stash 를 적용한 후에도 stash 목록에 남아 있습니다. 즉, 필요하다면 동일한 stash 를 여러 번 적용할 수 있지만, 이는 일반적인 워크플로우는 아닙니다.

stash 를 적용하고 목록에서 제거하려면 git stash apply 대신 git stash pop 명령을 사용합니다. pop은 변경 사항을 적용한 다음 즉시 stash 를 삭제하는 것과 같습니다.

git stash pop을 시연해 보겠습니다. 먼저, 작업 디렉토리가 깨끗한지 확인하십시오. stash 를 적용했으므로 커밋되지 않은 변경 사항이 있습니다. 이 시연을 위해 커밋하거나 삭제할 수 있습니다. 깨끗한 상태로 돌아가기 위해 삭제해 보겠습니다.

git restore .

이 명령어는 작업 디렉토리의 모든 변경 사항을 삭제합니다. 이제 상태를 확인합니다.

git status

출력은 깨끗한 작업 디렉토리를 표시해야 합니다.

On branch master
nothing to commit, working tree clean

이제 git stash pop을 사용하여 stash 를 적용하고 목록에서 제거해 보겠습니다.

git stash pop

stash 가 적용된 다음 삭제되었음을 나타내는 출력을 볼 수 있습니다.

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

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        feature.txt

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9)

마지막으로, stash 목록을 다시 확인해 보겠습니다.

git stash list

이번에는 출력이 없어야 하며, 이는 stash 목록이 비어 있음을 나타냅니다.

이는 git stash pop이 적용 후 stash 를 제거하는 반면, git stash apply는 목록에 stash 를 남겨둔다는 것을 확인합니다. applypop의 차이점을 이해하는 것은 stash 를 효과적으로 관리하는 데 중요합니다.

요약

이 Lab 에서는 Git stash 가 작업 디렉토리에 성공적으로 적용되었는지 확인하는 방법을 배웠습니다. 프로젝트에서 변경 사항을 생성하고 stash 하는 것으로 시작하여, git status를 사용하여 stash 및 적용 전후의 작업 디렉토리 상태를 관찰했습니다. stash 적용 후 깨끗한 작업 디렉토리는 변경 사항이 성공적으로 다시 가져와졌음을 나타냅니다.

또한 git stash list를 사용하여 사용 가능한 stash 목록을 보고, git stash apply 또는 git stash pop을 사용하여 stash 를 적용한 후 목록에서 stash 가 제거되었는지 확인하는 방법을 살펴보았습니다. 이는 특정 stash 가 더 이상 적용 대기 상태가 아님을 명확하게 확인할 수 있는 방법을 제공합니다.