우아한 테크코스/테크코스
[Git] stash(임시저장)
jamie.
2020. 3. 9. 15:39
반응형
Git stash
Stash : 숨기는 장소
git stash
commit을 하지 않고, 임시 저장
대상 파일
- 추적 상태인 파일을 수정한 것
> 추적 상태 : 과거에 이미 commit해서 스냅샷에 넣어진 관리 대상의 파일
- Stage 상태의 파일
> add된 파일
임시 저장하기
/* 이전 커밋메시지로 임시 저장하기 */
$ git stash
$ git stash save
// 예시
$ git stash
Saved working directory and index state WIP on jamie-step2: 650988a [리팩터링] 스트림 수정
/* 메시지로 임시 저장하기 */
$ git stash save 메시지
// 예시
$ git stash save "변경내역"
Saved working directory and index state On jamie-step2: 변경내역
내용 확인하기
$ git stash list
stash@{0}: WIP on jamie-step2: 650988a [리팩터링] 스트림 수정
stash@{1}: On jamie-step2: 변경내역
stash@{2}: On jamie-step2: 변경내역
stash@{3}: WIP on jamie-step2: 650988a [리팩터링] 스트림 수정
stash@{4}: WIP on jamie-step2: 650988a [리팩터링] 스트림 수정
내용 불러오기
/* 가장 최근 stash 복구 */
$ git stash apply
/* stash 지정도 가능 */
$ git stash apply stash@{2}
/* index 옵션시, stage 상태라면 stage 상태로 복구 */
$ git stash apply --index
불러오면서 내용이 겹치는 경우엔 conflict 발생함 :)
conflict - 충돌하면서 파일에 충돌된 부분이 적용됨, 직접 수정하고 add commit 해주면 됨
$ git stash apply stash@{2}
Auto-merging src/main/java/lotto/domain/TotalResult.java
CONFLICT (content): Merge conflict in src/main/java/lotto/domain/TotalResult.java
내용 불러오면서 불러온 stash 제거
/* 복구, stash 제거 / 단 non-stage 상태 */
$ git stash pop
/* stash 지정도 가능 */
$ git stash pop stash@{2}
/* 만약 stage 상태였다면 stage 상태로 돌려줌 */
$ git stash pop --index
삭제하기
/* 가장 위(최근)의 stash 제거 */
$ git stash drop
Dropped refs/stash@{0} (2ad204361515d6c931ef41004a0a81dd69050cc7)
/* 지정 제거 */
$ git stash drop stash@{2}
Dropped stash@{2} (3587701f2f06faf4316d3ec6bb3f77c23fb02085)
/* 전부 제거 */
$ git stash clear
개인적으로 임시로 파일 수정하고 롤백할 때 쓰면 편한 것 같음!
반응형