Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

힘내 숨김

스태싱을 사용하면 나중에 Git 리포지토리에 코드를 저장할 수 있습니다.

Git 저장소로 작업할 때 나중에 Git 커밋에 적용하려는 파일을 변경할 수 있습니다.

git stash 명령이 유용한 곳입니다. 스태싱을 사용하면 나중에 작업할 수 있도록 코드를 작업 분기에 저장할 수 있습니다. 이 튜토리얼에서는 Git stash의 기본 사항과 git stash 명령을 사용하는 방법을 예제와 함께 설명합니다.

Git Stash란 무엇입니까?

스태싱을 사용하면 작업 디렉토리에 코드를 저장하고 나중에 사용할 수 있도록 색인을 생성할 수 있습니다. 코드를 작성할 때 변경 사항을 저장하고 싶지만 저장소에 커밋하지는 않으려는 경우가 있습니다.

이러한 일이 발생할 수 있는 한 가지 시나리오는 문제를 수정하는 것입니다. 버그 보고서가 들어왔다고 가정해 보십시오. 이미 기능 구현 작업을 하고 있습니다. 기능에 대해 먼저 변경한 내용을 저장한 다음 버그를 수정하는 것이 좋습니다.

버그 보고서가 개발 중인 기능보다 우선할 가능성이 높기 때문입니다. 기능 중심 코드를 저장소에 커밋하기 전에 먼저 버그를 수정하고 싶을 것입니다. 커밋에 버그 수정 및 기능이 표시되는 것을 원하지 않습니다. 더 크고 복잡한 커밋으로 인해 다른 개발자가 저장소의 기록을 읽기가 더 어려워지기 때문입니다.

즉, 스태싱을 사용하면 기존 코드를 버리거나 커밋하지 않고도 Git 리포지토리에서 다른 작업을 수행할 수 있습니다.

스태싱을 사용하면 파일에 대한 변경 사항을 저장하거나 "숨길" 수 있습니다. 파일이 숨겨지면 다른 작업을 할 수 있습니다. 그런 다음 나중에 다시 돌아와 숨긴 변경 사항을 코드에 적용할 수 있습니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

스태싱은 현재 작업 디렉토리를 마지막 커밋으로 되돌립니다. 이것은 우리의 코드를 숨김으로써 우리가 작업할 수 있는 깨끗한 작업 디렉토리를 제공한다는 것을 의미합니다. 깨끗한 디렉토리가 있다는 것은 병합 충돌에 대해 걱정할 필요 없이 변경할 수 있음을 의미합니다. 또한 커밋 사이에 변경 사항을 정렬하는 것에 대해 생각할 필요가 없습니다.

Git에서 변경 사항을 숨기는 방법

git stash 명령은 나중에 코드를 숨기는 데 사용됩니다. git stash를 실행하면 현재 작업 디렉토리의 커밋에 푸시하지 않은 변경 사항이 나중에 저장됩니다. 여기에는 단계적 변경(git add를 사용하여 준비 영역에 추가된 변경)과 단계적 변경이 모두 포함됩니다.

git stash 명령 구문은 다음과 같습니다.

git stash

웹사이트에서 작업 중이고 코드가 Git 리포지토리에 저장되어 있다고 가정해 보겠습니다.

코드에서 index.html 및 index.js 파일을 변경했습니다. index.html 파일의 디자인 버그를 수정하는 동안 이 파일을 나중에 보관하려고 합니다.

변경 사항을 보려면 git status 명령을 사용할 수 있습니다. 이 예에서는 다음을 반환합니다.

마스터 분기에서 귀하의 분기는 'origin/master'로 최신 상태입니다. 커밋할 변경 사항:새 파일:index.js커밋을 위해 준비되지 않은 변경 사항:수정됨:index.html

이것은 우리가 새로운 파일(index.js)을 생성했고 기존 파일(index.html)을 수정했음을 보여줍니다. 코드베이스의 다른 부분에서 작업하는 동안 나중에 이러한 변경 사항을 저장하려고 합니다. 이렇게 하려면 git stash 명령을 사용합니다.

git stash

코드 반환:

마스터에 저장된 작업 디렉토리 및 색인 상태 WIP:3b16026 feat:새 홈페이지 시작

git stash 명령은 나중에 사용할 수 있도록 저장소에 대한 변경 사항을 저장했습니다. 이제 git status 명령을 다시 실행하면 커밋할 것이 없음을 확인할 수 있습니다.

마스터 브랜치에서 당신의 브랜치는 'origin/master'로 최신 상태입니다. 커밋할 것이 없고 트리 정리 작업 중

git stash 명령은 나중에 사용할 수 있도록 저장소에 대한 변경 사항을 저장했습니다. 이제 git status 명령을 다시 실행하면 커밋할 것이 없음을 확인할 수 있습니다.

코드가 숨겨지면 변경 사항 없이 저장소가 이전 커밋으로 되돌아갑니다. 코드에 대한 변경 사항은 나중을 위해 저장되었습니다. stash pop 명령을 사용하여 준비가 되면 코드베이스에 적용할 수 있습니다.

추적되지 않은 변경 사항 숨기기

git stash 명령은 Git 저장소에서 이미 추적 중인 파일에 대한 준비된 변경 사항과 준비되지 않은 변경 사항만 숨깁니다. . 기본적으로 stash 명령에는 추적되지 않은 변경 사항이 포함되지 않습니다.

단계적 변경은 준비 영역에 추가된 변경 사항입니다. 숨김 처리되지 않은 변경 사항은 Git에서 추적하는 파일에 대한 변경 사항입니다. Git에서 추적하지 않는 새 파일을 변경하면 Git stash에 추가되지 않습니다. 무시된 파일은 보관함에 추가되지 않습니다.

git stash 명령을 사용할 때 적용되는 기본 환경 설정입니다. 준비되지 않은 새 파일과 같이 추적되지 않은 파일을 숨기려면 -u 플래그를 사용할 수 있습니다. -u 플래그의 구문은 다음과 같습니다.

git stash -u

또는 무시된 파일을 숨김에 포함하려면 -a 플래그를 사용할 수 있습니다. -a 플래그의 구문은 다음과 같습니다.

git stash -a

-a 플래그를 사용하면 무시된 파일에 대한 변경 사항을 숨기도록 git stash에 지시합니다. 코드 저장소의 .gitignore 파일 내에 정의된 파일입니다(있는 경우).

git stash pop을 사용하여 숨긴 변경 사항 적용

git stash pop 명령은 숨김 변경 사항을 저장소에 적용하는 데 사용됩니다. 이전 예제에서 만든 숨김 변경 사항을 적용하기로 결정했다고 가정합니다. 다음 명령을 사용하여 수행할 수 있습니다.

git stash pop

git stash pop 명령은 다음을 반환합니다.

마스터 분기에서 귀하의 분기는 'origin/master'로 최신 상태입니다. 커밋할 변경 사항:새 파일:index.js변경 사항이 커밋을 위해 준비되지 않음:수정됨:index.htmlDropped refs/stash@{0} (48afd55381cf43f2332f771349c7233fb99f80 /사전> 

git stash pop 명령을 실행하면 stash의 변경 사항이 저장소의 로컬 작업 복사본에 적용됩니다. pop 명령은 tash의 코드를 저장소에 적용합니다. 그러면 보관함이 비워집니다.

git stash pop 명령은 또한 코드에 대한 변경 사항 목록을 반환하여 숨김에 무엇이 있었는지 보여줍니다.

git stash apply 명령을 사용하여 변경 사항을 코드에 적용할 수 있습니다. 이러한 변경 사항을 보관함에 보관할 수 있습니다. 다음 명령을 사용하여 stash의 변경 사항을 유지할 수 있습니다.

git stash 적용

명령은 다음을 반환합니다.

마스터 분기에서 귀하의 분기는 'origin/master'로 최신 상태입니다. 커밋할 변경 사항:새 파일:index.js커밋을 위해 준비되지 않은 변경 사항:수정됨:index.html

여러 분기에 변경 사항 적용

코드베이스의 많은 분기에 동일한 숨김 변경 사항을 적용하는 것은 stash 명령의 좋은 사용 사례입니다. 예를 들어, 하나의 브랜치에 은닉을 적용하기로 결정할 수 있습니다. 그런 다음 다른 브랜치로 이동하여 동일한 stash를 사용하여 저장된 변경 사항을 적용합니다.

여러 은닉

Git에서 여러 개의 숨김을 만들 수 있습니다. 이것은 하나의 파일을 변경하고 나중을 위해 숨길 수 있음을 의미합니다. 다른 파일을 변경하고 별도의 보관함에 저장할 수 있습니다.

스태쉬 추적

저장소의 숨김 목록을 반환하려면 다음 명령을 실행할 수 있습니다.

git 숨김 목록

우리가 만든 모든 숨김 목록을 검색하고 싶다고 가정합니다. 위의 명령을 실행하여 그렇게 할 수 있습니다. 이 명령은 다음을 반환합니다.

stash@{0}:마스터의 WIP:3b16026 feat:새 홈페이지 시작stash@{1}:WIP on 마스터:3b16026 feat:새 홈페이지 시작

git stash list 명령이 은닉 목록을 반환했습니다.

그러나 이러한 stash는 stash와 연결된 기본 커밋 메시지만 사용합니다. 이것은 어떤 변경 사항이 포함된 보관함을 추적하기가 어렵다는 것을 의미합니다. 보관함에 대한 설명을 지정하지 않았기 때문입니다.

새 보관함에 설명을 추가하고 싶다고 가정해 보겠습니다. 다음 명령을 사용하여 수행할 수 있습니다.

git stash save "웹사이트에 새 변경 사항 추가"

명령은 다음을 반환합니다.

저장된 작업 디렉토리 및 색인 상태 마스터에서:웹사이트에 새 변경 사항 추가

마지막 커밋과 관련된 기본 메시지가 제공되는 대신 stash에 자체 메시지가 할당되었습니다.

여러 은닉 적용

git stash pop 명령은 가장 최근의 숨김을 저장소(stash@{0} 태그가 있는 저장소)에 적용합니다. 그러나 여러 개의 숨김으로 작업할 때 코드베이스에 특정 숨김을 적용할 수 있습니다.

코드베이스에 적용하려는 숨김과 연결된 고유 ID를 지정하면 됩니다. stash@{1}에 저장된 숨김을 코드베이스에 적용한다고 가정합니다. 다음 명령을 사용하여 수행할 수 있습니다.

git stash pop stash@{2}

이 명령은 stash@{2}에 저장된 변경 사항을 저장소에 적용하고 stash를 삭제합니다.

Stash를 사용하여 분기 만들기

스태싱은 다른 변경 작업을 수행하는 동안 코드베이스에 대한 변경 사항을 편리하게 저장하는 방법입니다.

그러나 숨김을 유지하는 대신 코드를 자체 분기로 이동하려는 경우가 있습니다.

이 시나리오는 코드를 병합할 때 충돌이 발생하는 경우 발생할 수 있습니다. 코드베이스를 크게 변경하는 경우 코드를 다른 분기로 이동할 수도 있습니다. git stash 분기 명령이 들어오는 곳입니다.

git stash branch 명령을 사용하여 stash의 변경 사항이 적용될 새 분기를 만들 수 있습니다. 이 명령의 구문은 다음과 같습니다.

git stash 브랜치  

"new-branch" 매개변수는 생성되어야 하는 분기의 ID를 나타냅니다. "stash-id"는 코드를 새 브랜치에 적용하려는 stash의 ID를 나타냅니다.

stash@{2} stash의 변경 사항을 "update-site"라는 새 분기에 적용한다고 가정합니다. 다음 명령을 사용하여 수행할 수 있습니다.

git stash 분기 업데이트 사이트 stash@{2}

명령은 다음을 반환합니다.

새로운 브랜치 'update-site'로 전환됨 브랜치 update-siteChanges to be commit:new file:index.jsChanges not staged for commit:수정됨:index.htmlDropped stash@{2} (9a15b9cd20f8988937134d1267fafbea4c6a8647) 

먼저 git stash branch 명령은 숨김 변경 사항에 대한 새 분기를 만듭니다. 저장소에 대한 변경 사항이 새 분기에 적용됩니다. 그런 다음 해당 분기 보기로 전환합니다. 마지막으로 stash 코드가 자체 분기에 저장되었기 때문에 stash가 삭제됩니다.

Git Stash 삭제

숨김에 있는 코드를 사용한 후에는 git stash drop 명령을 사용하여 숨김을 삭제할 수 있습니다. git stash drop 명령 구문은 다음과 같습니다.

git stash drop 

ID가 stash@{2}인 stash를 삭제한다고 가정합니다. 다음 명령을 사용하여 수행할 수 있습니다.

git stash drop stash@{2}

명령은 다음을 반환합니다.

 stash@ 삭제됨{2} (82079798c950b053fac0efb7b1d5693864dc96e7)

또는 git stash clear 명령을 사용하여 리포지토리와 연결된 모든 숨김을 삭제할 수 있습니다. 이 명령의 구문은 다음과 같습니다.

git stash clear

이 명령은 저장소의 모든 은닉을 삭제합니다.

특정 파일 숨기기

git stash 명령은 기본적으로 현재 작업 디렉토리에 있는 모든 추적 파일을 숨깁니다. 그러나 어떤 경우에는 특정 파일이나 파일 세트를 숨기기로 결정할 수 있습니다.

git stash push 명령을 사용하여 특정 파일을 숨길 수 있습니다. 이 명령을 사용하는 구문은 다음과 같습니다.

git stash push -m "<메시지>" <파일>

"message" 매개변수는 숨김과 연결될 메시지를 나타냅니다. "file" 매개변수는 숨길 파일의 이름입니다.

코드의 index.html 파일에 대한 변경 사항만 숨김에 추가한다고 가정합니다. 다음 명령을 사용하여 수행할 수 있습니다.

git stash push -m "feat:index.html 파일 변경" index.html

명령 반환:

저장된 작업 디렉토리 및 인덱스 상태 마스터에서:feat:index.html 파일 변경

이 명령은 "feat:변경된 index.html 파일"이라는 커밋 메시지와 함께 index.html 파일만 숨김에 추가했습니다. 코드에 대한 다른 모든 변경 사항은 추가되지 않았습니다.

스태쉬 간의 차이점 표시

숨김으로 작업할 때 숨긴 코드로 돌아가기 전에 여러 커밋에 걸쳐 코드베이스를 다양하게 변경할 수 있습니다.

예를 들어 코드를 숨겼고 버그를 수정하기 위해 계속 진행한 경우 숨겨진 코드로 돌아가기 전에 버그를 수정하기 위해 몇 가지 커밋을 푸시할 수 있습니다. 이는 숨김과 코드의 가장 최근 커밋 간의 차이점에 대한 요약을 보고 싶어할 수 있음을 의미합니다(따라서 코드를 숨긴 이후 변경 사항을 알 수 있음).

stash와 가장 최근 커밋의 차이점을 보려면 git stash show 명령을 사용할 수 있습니다. 이 명령의 구문은 다음과 같습니다.

git stash 쇼 

"stash-id" 매개변수는 분기의 가장 최근 커밋과 비교하려는 변경 사항이 있는 숨김의 ID입니다. stash@{1} stash의 코드를 현재 코드 상태와 비교한다고 가정해 보겠습니다. 다음 명령을 사용하여 수행할 수 있습니다.

git stash 쇼 stash@{1}

명령 반환:

 index.html | 2 +- index.js | 0 2개 파일 변경, 1개 삽입(+), 1개 삭제(-)

이 출력은 코드에 두 가지 변경 사항이 있음을 알려줍니다. 하나는 삽입이고 다른 하나는 삭제입니다. 파일 간의 차이점을 보려면 -p stash 플래그를 사용하여 차이점을 볼 수 있습니다. 이 플래그의 구문은 다음과 같습니다.

git stash show -p stash@{1}

위의 명령이 실행되면 다음을 반환합니다.

diff --git a/index.html b/index.htmlindex 4dd1ef7..e859c68 100644--- a/index.html+++ b/index.html@@ -1 +1 @@-
+diff --git a/index.js b/index.jsnew 파일 모드 100644index 0000000..e69de29

이 출력을 통해 숨김에 있는 코드와 분기의 가장 최근 커밋을 완전히 비교할 수 있습니다. 예를 들어 위의 출력은 index.html 파일에서 줄을 제거하고(- 기호로 표시) 줄을 index.html 파일에 추가했음을 알려줍니다( + 기호).

결론

git stash 명령은 코드베이스에 대한 변경 사항을 임시로 저장합니다. 준비가 되면 돌아와서 코드베이스에 변경 사항을 적용할 수 있습니다.

이 튜토리얼에서는 Git stash의 기본 사항과 git stash 명령을 사용하여 Git stash 기능을 사용하는 방법에 대해 설명했습니다. 이제 Git 전문가처럼 코드 숨김을 시작하는 데 필요한 지식을 갖추었습니다!