Pichu Pokeball
본문 바로가기
IntelliJ

IntelliJ IDEA의 Shelf(쉘브) 임시저장 기능

by campanula 2025. 2. 6.

IntelliJ IDEA는 강력한 개발 도구로, 다양한 기능을 제공하여 개발자의 생산성을 극대화합니다. 그중에서도 Shelf(쉘브) 기능은 코드 변경사항을 임시로 저장하고 필요할 때 복원할 수 있는 유용한 기능입니다. 이 글에서는 쉘브(Shelf) 기능이 무엇인지, 언제 사용하는지, 그리고 어떻게 활용하는지 자세히 살펴보겠습니다. 들어가기에 앞서, 쉘브 기능을 사용해도 자동 커밋이 되지 않고 로컬에서 임시저장해주는 기능입니다.ㅎㅎ 긴장하지 않아도 됩니다! (쫄보)


1. Shelf(쉘브) 기능이란?

쉘브(Shelf)는 Git의 stash(스태시)와 비슷한 기능을 제공하는 IntelliJ IDEA의 변경 사항 관리 기능입니다.
쉽게 말해, 아직 커밋하기 이른 변경사항을 저장하고, 필요할 때 다시 가져올 수 있도록 도와주는 기능입니다.

📌 주요 특징

  • Git과 독립적: Git을 사용하지 않아도 변경 사항을 쉘브에 저장할 수 있음.
  • 변경 사항 임시 저장: 코드 변경 사항을 저장했다가 나중에 다시 불러올 수 있음.
  • 커밋과 다름: 쉘브에 저장된 변경 사항은 로컬에서만 유지되며, 원격 저장소에는 영향을 주지 않음.
  • Git Stash와 차이점: 쉘브는 IntelliJ 전용 기능으로, Git과 무관하게 동작하지만 Git을 사용하는 프로젝트에서도 유용하게 활용 가능.

2. 언제 Shelf 기능을 사용하면 좋을까?

쉘브 기능은 아래와 같은 상황에서 매우 유용합니다.

1) 현재 작업 중인데, 다른 브랜치로 전환해야 할 때

작업 도중 긴급한 버그 수정이나 다른 브랜치에서 작업해야 하는 상황이 발생할 수 있습니다.
이럴 때 변경 사항을 쉘브에 저장해 두고, 나중에 다시 복원하면 불필요한 커밋 없이 원활하게 작업할 수 있습니다.

2) 아직 커밋하기 이른 변경 사항을 보관할 때

커밋할 준비가 되지 않았지만, 잠시 다른 작업을 해야 하는 경우 쉘브 기능을 사용하면 변경사항을 안전하게 저장할 수 있습니다. 

3) 임시 코드 실험 후 되돌리고 싶을 때

특정 기능을 테스트하기 위해 임시 코드를 작성했지만, 이후 해당 변경 사항을 삭제하거나 원래 코드로 복원하고 싶을 때 쉘브 기능이 유용합니다.


3. IntelliJ IDEA에서 Shelf 기능 사용 방법

📌 1) 변경 사항을 쉘브에 저장하는 방법

  1. 좌측 하단 Subversion을 엽니다.
  2. Lodal Changes에서 우클릭을 하여 Shelve Changes...를 클릭합니다. (commit 창과 비슷하게 생겼지만 두려워 하지 말구..)
  3. 새로운 창에서 "Shelve Changes" 버튼을 클릭하면 변경 사항이 저장됩니다.

📌 Tip:

  • VCS(Version Control) > Local Changes 탭에서도 "Shelve Changes" 버튼을 눌러 쉘브를 저장할 수 있습니다.

📌 2) 쉘브에서 변경 사항을 복원하는 방법

  1. Subversion > Shelf 탭을 엽니다.
  2. 저장된 쉘브 목록에서 원하는 항목을 선택합니다.
  3. "Unshelve" 버튼을 클릭하면 변경 사항이 다시 적용됩니다.

📌 Tip:

  • "Unshelve with Conflict Resolution" 옵션을 선택하면, 기존 코드와 충돌이 발생할 경우 해결하면서 적용할 수 있습니다.

📌 3) 쉘브 목록에서 불필요한 항목 삭제

쉘브는 지속적으로 저장되므로, 불필요한 항목이 쌓일 수 있습니다.

  • Shelf 탭에서 삭제할 항목을 선택한 후 "Remove" 버튼을 클릭하면 쉘브에서 제거됩니다.
  • 혹은 우클릭 후 delete로 간단하게 삭제할 수 있습니다.

4. Git Stash와 IntelliJ Shelf의 차이점

비교 항목Git StashIntelliJ Shelf

의존성 Git 저장소 필요 Git 없이도 사용 가능
저장 위치 Git 내부에 저장 IntelliJ 내부에 저장
복원 방법 git stash pop 또는 git stash apply "Unshelve" 버튼 클릭
UI 지원 CLI 기반 (터미널 사용) GUI 지원 (편리한 UI 제공)
충돌 해결 충돌 시 직접 해결 "Unshelve with Conflict Resolution" 기능 제공
  • Git Stash는 CLI(커맨드라인 인터페이스) 중심,
  • IntelliJ Shelf는 GUI(그래픽 인터페이스) 중심

따라서 Git을 사용하는 경우에도 IntelliJ의 쉘브 기능을 병행하면 더욱 편리하게 코드 변경 사항을 관리할 수 있습니다.


5. IntelliJ Shelf 기능 활용 꿀팁

🎯 1) 자동 커밋을 방지하고 싶을 때 활용

때때로 실수로 변경 사항을 커밋하는 경우가 있습니다. 커밋 전 쉘브를 활용하면, 안전하게 변경 사항을 임시 저장한 후 신중하게 커밋할 수 있습니다.

🎯 2) 여러 개의 변경 사항을 개별적으로 관리

쉘브는 여러 개의 변경 사항을 개별적으로 저장할 수 있기 때문에, 특정 변경 사항만 복원하는 것도 가능합니다.

🎯 3) 팀원 간 코드 공유 용도로 활용

쉘브 파일(.patch 형식)은 **파일로 내보내기(export)**할 수 있습니다. 이를 통해 팀원과 코드 변경 사항을 공유하는 것도 가능합니다.


 

잠깐!

Q: 로컬에서 a로 수정하고, Shelf에 b로 저장하면 커밋할 때 어떻게 될까?

✅ 1. Shelf에 있는 변경 사항을 적용하지 않고 커밋하면?

로컬에서 a로 수정한 상태에서 svn commit하면 현재 작업 디렉토리의 a만 커밋됩니다.

Shelf에 저장한 b는 적용되지 않았으므로, 커밋과는 무관합니다.

✅ 2. Shelf에 저장된 b를 다시 적용한 후 커밋하면?

svn unshelve 명령어를 사용해서 Shelf에 있던 b를 다시 가져오면, 파일 내용이 b로 변경됩니다.

이 상태에서 svn commit하면 최종적으로 b가 커밋됩니다.

 

✅ 3. 충돌이 발생하는 경우

만약 로컬에서 a로 수정한 상태에서 Shelf에서 b를 적용(unshelve)하면,

SVN이 자동 병합을 시도하지만

같은 부분이 다르게 수정되었다면 충돌(Conflict) 이 발생할 수 있습니다.

이 경우 직접 충돌을 해결하고 커밋해야 합니다.

✔ Shelf는 커밋과 직접적인 관계가 없음.
✔ Shelf에 저장한 변경 사항은 svn unshelve로 다시 가져오기 전까지 커밋되지 않음.
✔ Shelf를 적용한 후 로컬 변경과 충돌이 나면 수동으로 해결해야 함.


6. 결론: IntelliJ Shelf를 활용하여 더 효율적으로 코드 관리하자!

IntelliJ IDEA의 Shelf 기능은 Git Stash와 유사하면서도 더욱 직관적인 UI를 제공하여 개발자의 코드 변경 사항을 효율적으로 관리할 수 있도록 돕습니다.

커밋 전 변경사항을 임시 저장할 수 있고,
긴급한 작업이 필요할 때 안전하게 변경사항을 보관할 수 있으며,
Git을 사용하지 않는 프로젝트에서도 변경사항을 쉽게 관리할 수 있습니다.

개발 중 작업 흐름을 방해받지 않으면서 코드 변경을 효과적으로 관리하고 싶다면, IntelliJ의 Shelf 기능을 활용해보세요! 


📢 관련 링크

IntelliJ 공식 문서: https://www.jetbrains.com/idea/
더 많은 IntelliJ 활용 팁: https://gptonline.ai/ko/