Git Stash 에 특정 변경 사항이 있는지 확인하는 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 특정 변경 사항이 포함되어 있는지 확인하기 위해 Git stash 의 내용을 검사하는 방법을 배우게 됩니다. 먼저 샘플 저장소에서 몇 가지 변경 사항을 만들고 stash 하는 것으로 시작합니다.

그런 다음 git stash show -p 명령을 사용하여 가장 최근 stash 의 자세한 diff 를 볼 수 있습니다. 이를 통해 추가, 제거 또는 수정된 정확한 라인을 확인할 수 있습니다. 마지막으로, 찾고 있는 변경 사항을 찾기 위해 여러 stash 를 검사하는 방법을 살펴보겠습니다.

git stash show -p 실행

이 단계에서는 Git stash 에 저장된 변경 사항을 검사하는 방법을 배우겠습니다. git stash를 사용하면 커밋되지 않은 변경 사항이 Git 에 저장됩니다. 정확히 무엇이 저장되었는지 확인하려면 git stash show 명령을 사용할 수 있습니다.

먼저, my-time-machine 저장소의 파일에 몇 가지 변경 사항을 적용해 보겠습니다. 아직 해당 디렉토리에 있지 않다면 다시 이동합니다.

cd ~/project/my-time-machine

이제 message.txt 파일에 새로운 내용을 추가해 보겠습니다. echo 명령을 >>와 함께 사용하여 파일에 추가하여 기존 내용을 덮어쓰지 않도록 합니다.

echo "Adding a new line for stashing." >> message.txt

cat을 사용하여 파일의 내용을 확인할 수 있습니다.

cat message.txt

원래 줄과 새 줄이 모두 표시되어야 합니다.

Hello, Future Me
Adding a new line for stashing.

이제 이러한 변경 사항을 stash 해 보겠습니다. stash 는 커밋되지 않은 변경 사항을 저장하므로 다른 작업을 수행하고 나중에 다시 돌아올 수 있습니다.

git stash save "Added a line for stashing demo"

변경 사항이 저장되었음을 나타내는 출력이 표시되어야 합니다.

Saved working tree and index state On branch master: Added a line for stashing demo

이제 변경 사항이 stash 되었으므로 git stash show를 사용하여 stash 에 무엇이 있는지 확인해 보겠습니다.

git stash show

이 명령은 가장 최근 stash 의 변경 사항에 대한 요약을 제공합니다. 다음과 같은 출력이 표시될 수 있습니다.

 message.txt | 1 +
 1 file changed, 1 insertion(+)

이는 하나의 파일 (message.txt) 이 변경되었고, 한 줄이 삽입되었음을 의미합니다.

변경 사항의 실제 내용을 보려면 -p 플래그 (patch 를 의미) 를 추가해야 합니다. 이렇게 하면 git diff와 마찬가지로 diff 가 표시됩니다.

git stash show -p

이 명령은 stash 된 변경 사항에서 추가, 제거 또는 수정된 정확한 줄을 표시합니다. 출력은 표준 Git diff 와 유사하게 표시됩니다.

diff --git a/message.txt b/message.txt
index <some_hash>..<some_hash> 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+Adding a new line for stashing.

+로 시작하는 줄은 추가를 나타냅니다. 이 경우 "Adding a new line for stashing." 줄을 추가했습니다.

git stash show -p를 사용하면 stash 를 적용하거나 삭제하기 전에 stash 에 무엇이 있는지 이해하는 데 매우 중요합니다. stash 에 예상한 변경 사항이 포함되어 있는지 확인하는 데 도움이 됩니다.

Stash Diff 에서 변경 사항 검색

이전 단계에서는 git stash show -p를 사용하여 stash 의 변경 사항을 확인했습니다. 때로는 diff 출력, 특히 대규모 프로젝트에서는 매우 길어질 수 있습니다. 이러한 경우 stash diff 내에서 특정 변경 사항을 검색할 수 있습니다.

Git 의 diff 출력은 텍스트일 뿐이므로 grep과 같은 표준 Linux 명령줄 도구에 파이프하여 패턴을 검색할 수 있습니다.

이전 단계에서 추가한 줄인 "Adding a new line for stashing."을 검색해 보겠습니다.

아직 ~/project/my-time-machine 디렉토리에 있는지 확인합니다.

cd ~/project/my-time-machine

이제 git stash show -p 명령을 실행하고 출력을 grep으로 파이프합니다. "stashing"이라는 단어를 검색합니다.

git stash show -p | grep "stashing"

diff 출력에서 "stashing"이라는 단어가 포함된 줄이 표시되어야 합니다.

+Adding a new line for stashing.

이는 grep을 사용하여 git stash show -p의 출력을 필터링하고 stash 된 변경 사항 내에서 특정 줄 또는 패턴을 찾는 방법을 보여줍니다.

grep의 모든 옵션을 사용하여 검색을 세분화할 수 있습니다. 예를 들어, 대소문자를 구분하지 않는 검색을 위해 -i를 사용하거나, 일치하는 항목 주변의 컨텍스트 줄을 표시하기 위해 -C를 사용할 수 있습니다.

stash diff 를 검색할 수 있다는 것은 특히 여러 stash 또는 대규모 stash 가 있는 경우 강력한 기술입니다. 전체 diff 출력을 수동으로 스크롤하지 않고도 관심 있는 변경 사항을 빠르게 찾을 수 있습니다.

여러 Stash 테스트

실제 시나리오에서는 여러 번 변경 사항을 stash 해야 할 수 있습니다. Git 은 여러 stash 를 허용하며, 이는 스택으로 관리됩니다. 가장 최근의 stash 는 스택의 맨 위에 있으며, stash@{0}으로 참조됩니다. 이전 stash 는 stash@{1}, stash@{2} 등입니다.

이것이 어떻게 작동하는지 확인하기 위해 다른 변경 사항 집합을 만들고 stash 해 보겠습니다.

먼저, ~/project/my-time-machine 디렉토리에 있는지 확인합니다.

cd ~/project/my-time-machine

이제 message.txt에 다른 줄을 추가해 보겠습니다.

echo "Adding a second line for another stash." >> message.txt

내용을 확인합니다.

cat message.txt

이제 세 줄이 표시되어야 합니다.

Hello, Future Me
Adding a new line for stashing.
Adding a second line for another stash.

이제 이러한 새로운 변경 사항을 stash 합니다.

git stash save "Added a second line for stashing demo"

새로운 stash 를 나타내는 출력이 표시되어야 합니다.

Saved working tree and index state On branch master: Added a second line for stashing demo

보유한 stash 목록을 보려면 git stash list 명령을 사용합니다.

git stash list

다음과 유사한 내용이 표시되어야 합니다.

stash@{0}: On master: Added a second line for stashing demo
stash@{1}: On master: Added a line for stashing demo

가장 최근의 stash("Added a second line...") 는 stash@{0}이고, 이전 stash("Added a line...") 는 stash@{1}임을 확인하십시오.

특정 stash 의 내용을 보려면 stash 식별자와 함께 git stash show -p를 사용할 수 있습니다. 예를 들어, 처음 만든 stash(stash@{1}) 를 보려면 다음을 수행합니다.

git stash show -p stash@{1}

그러면 stash@{1}의 변경 사항에 대한 diff 가 표시됩니다.

diff --git a/message.txt b/message.txt
index <some_hash>..<some_hash> 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+Adding a new line for stashing.

그리고 가장 최근의 stash(stash@{0}) 를 보려면:

git stash show -p stash@{0}

그러면 stash@{0}의 변경 사항에 대한 diff 가 표시됩니다.

diff --git a/message.txt b/message.txt
index <some_hash>..<some_hash> 100644
--- a/message.txt
+++ b/message.txt
@@ -2 +2,2 @@
 Adding a new line for stashing.
+Adding a second line for another stash.

여러 stash 를 관리하고 개별적으로 내용을 검사할 수 있다는 것은 서로 다른 작업이나 실험을 병행할 때 매우 유용합니다.

요약

이 랩에서는 git stash show 명령을 사용하여 Git stash 의 내용을 검사하는 방법을 배웠습니다. 먼저 파일에 변경 사항을 적용한 다음 git stash save를 사용하여 설명 메시지와 함께 해당 변경 사항을 stash 했습니다. 그런 다음 git stash show를 사용하여 변경 사항의 요약을 얻었고, 더 중요한 것은 git stash show -p를 사용하여 stash 된 변경 사항의 자세한 diff 를 확인하여 추가되거나 수정된 정확한 줄을 볼 수 있었습니다.

제공된 내용에 자세히 설명되지 않은 후속 단계는 특정 변경 사항에 대한 stash diff 를 검색하고 여러 stash 를 테스트하여 스택에서 다른 stash 를 검사하는 방법을 이해하는 것을 포함할 것입니다. 이 프로세스는 stash 가 적용하거나 삭제하기 전에 예상된 수정 사항을 포함하는지 확인하는 데 중요합니다.