IntelliJ IDEA 2016.3 Help
원문 : https://www.jetbrains.com/help/idea/2016.3/stashing-and-unstashing-changes.html
(번역이 잘못되었을 수 있으니 원문을 같이 참고해 주세요^^)
가끔 HEAD를 맞추기 위해 당신의 작업을 되돌릴 필요가 있지만, 당신이 이미 작업한 내용을 잃어 버리고 싶지 않은 경우가 있다. 긴급한 수정을 해야 되거나, 당신이 작업중인 내용과 연관될 수 있는 상위 스트림의 작업이 있는 것을 알게 된 경우 이런 일이 발생할 수 있다.
Stashing 은 HEAD 커밋과 현재 작업 디렉토리(stash)의 차이점을 저장한다. 인덱스의 변경도 함께 저장된다.
Unstashing은 저장된 stash를 브랜치에 적용한다.
기존 작업중인 브랜치에 stash를 적용하거나, 새로운 브랜치를 생성하여 적용할 수 있다.
당신이 필요한 어느 때라도 어느 브랜치에라도 브랜치를 변경하면서 stash를 적용할 수 있다. 다음 사항을 기억하자 :
- 연속된 커밋이후 stash를 적용하면 resolve가 필요한 충돌을 일으킨다.
- 최종 커밋 이후 변경된 "dirty" 작업분에는 stash를 적용할 수 없다.
stash리스트를 필요한 만큼 저장할 수 있고, 필요할 때 삭제할 수 있다.
1. 메인 메뉴에서 VCS | Git | Stash Changes 를 선택한다. Stash 다이얼로그 상자가 열린다.
2. 연관된 Git 루트를 선택하고 올바른 브랜치가 체크아웃 되었는지 확인 한다.
3. 메시지 텍스트 상자에 stash될 변경에 대한 설명을 기입한다.
동일 브랜치에 stash적용 하기
1. 메인 메뉴에서 VCS | Git | Unstash Changes 를 선택한다. Unstash Changes 다이얼로그 상자가
열린다.
2. stash를 적용할 Git 루트를 선택하고, 올바른 브랜치가 체크아웃 되었는지 확인 한다.
3. Stashes 리스트에서 연관된 stash를 선택한다.
4. View 버튼을 클릭하면 Paths affected in commit 다이얼로그 상자가 열리고, 어떤 파일들이 영향을
받는지 확인 한다.
5. 추가적인 unstash 옵션
- stash가 적용된 이후 리스트에서 삭제되게 하려면 Pop stash 체크 박스를 선택한다.
- stash된 인덱스 변경을 적용하려면 Reinstate Index체크박스를 선택 한다.
(주의) 충돌이 있는 경우, 이 동작은 실패할 수 있다. This happens because conflicts are stored in the index, where you can no longer apply the changes as they were originally.
stash를 기반으로 새로운 브랜치 생성하기
1. 메인 메뉴에서 VCS | Git | Unstash Changes를 선택한다. Unstash Changes 다이얼로그 상자가 열린다.
2. stash를 적용할 Git 루트를 선택한다.
3. Stashes 리스트에서 연관된 stash를 선택한다.
4. As new branch 텍스트 박스에 새로 생성된 브랜치 이름을 입력한다.
1. 메인 메뉴에서 VCS | Git | Unstash Changes 를 선택한다. Unstashes Changes 다이얼로그 박스가
열린다.
2. Stashes 리스트에서 삭제할 stashes 를 선택하고 Drop 버튼을 클릭한다.
Stashing vs shelving
이미 눈치 챘을지 모르지만 Stashing 과 Unstashing은 Shelving 과 Unshelving과 공통점이 많습니다.
유일한 차이점은 패치가 생성되고 적용되는 방식입니다.
- stash에 의한 패치는 Git 자체에서 생성됩니다. 나중에 적용할 때, IntelliJ IDEA가 필요하지 않습니다.
- shelved에 의한 패치는 IntelliJ IDEA에 의해 생성 됩니다. 일반적으로 IDE를 통해서 적용됩니다. IntelliJ IDEA를 통하지 않고 shelve를 반영할 수 도 있지만 추가적인 단계들이 필요합니다.