본문 바로가기
SWE/LetGit

git stash / git merge 할 때 충돌 해결법

by S나라라2 2019. 12. 10.
반응형

git stash 개념

: 자신이 어떤 작업을 하던 중에 다른 요청이 들어와, 하던 작업을 멈추고 잠시 브랜치를 변경해야 할 일이 있다. 이때, 아직 완료하지 않은 일을 commit 하는 것이 껄끄럽다.

 git stash명령어를 사용해 아직 완료하지 않은 일을 commit하지 않고 나중에 다시 꺼내와 마무리할 수 있다.

- git stash 명령을 사용하면 워킹 디렉토리에서 수정한 파일들만 저장한다.

- stash란 아래에 해당하는 파일들을 보관하는 장소이다.

 (1) Modified이면서 Tracked 상태인 파일

    - Tracked상태인 파일을 수정한 경우

    - Tracked : 과거에 이미 commit하여 스냅샷에 넣어진 관리 대상 상태의 파일

 (2) Staging Area에 있는 파일(Staged 상태의 파일)

    - git add 명령을 실행한 경우

    - Stage상태로 만들려면 git add 명령을 실행해야 한다.

    - git add는 파일을 새로 추적할 때도 사용하고 수정한 파일을 Staged상태로 만들 때도 사용한다.

 

 

1. 하던 작업 임시로 저장하기

> git stash

> git stash save  // 옵션 파라미터를 허용하지 않음. 현재 작업을 저장해두고 branch를 head로 돌린다.

> git stash push    // 옵션 파라미터 사용할 수 있음. ex) -m 과 함께 사용해서 메시지를 저장할 수 있음

 

 

2. stash 목록 확인하기

>git stash list

 

 

3. stash 적용하기 (했던 작업을 다시 가져오기)

> git stash apply              // stash list에 남아있음. 가장 최신 버전을 적용

> git stash pop                // stash list에서 지우고 적용

> git stash apply --index    // Stage상태였던 파일을 자동을 다시 Staged상태로 만들어줌. 원래 작업하던 파일의 상태로 복원

> git stash apply stash@{3}

 

 

4. stash 제거하기

> git stash drop   // 스택에 남아있는 가장 최근 stash 제거

> git stash clear   // 전체 stash 제거

반응형