작성하던 코드들을 스태시 공간으로 치우는 명령어
예를 들어, test 브랜치에서 작업을 하다가 팀 동료가 자신이 main 브랜치로 병합한 코드들을 확인해달라고 부탁을 받았을 때 main 브랜치로 이동을 해서 확인을 해야하는 상황이라고 한다면..
이때 코드 작성 중에 브랜치 이동을 하게되면 이동 간에 코드 충돌이 발생하면 이동이 불가능해지고 충돌이 발생하지 않으면 내가 test 브랜치에서 작성 중인 코드들이 main 브랜치로 따라가는 불필요한 현상이 발생하게 된다.
그래서 stash 명령어로 작성 중이던 코드들을 잠시 치워두고 브랜치 이동 등의 다른 작업을 할 수 있게 한다.
git stash
명령어로 작성 중인 모든 코드들을 스태시 공간으로 치워둘 수 있다.
tigers.yaml 파일에 멤버를 추가하고
tomcats.yaml 파일을 새로 만들었다.
현재 이 두 파일에서 작업을 진행 중이라고 가정한다.
참고로 파일을 stash를 하려면(잠시 치워두려면) 해당 파일은 일단 tracking 상태여야한다. (이를 위해 git add tomcats.yaml 진행)
위 내용들은 작업 중이던 모든 파일이 한 번에 치워지지만 -p
옵션으로 원하는 파일만을 치울수도 있다.
git stash -p
를 입력하면 어떤 파일을 치워둘지 결정하는 내용이 나와 y, n 명령어로 결정하면 된다.
git stash -m ‘메시지’
로 어떤 것을 치워둔 건지 알 수 있도록 메시지를 남길 수 있다.
git stash pop
또는 git stash apply
명령어로 스태시한 코드들을 가져올 수 있다.
이 둘의 차이점은
그리고 스태시를 하면 아래 사진과 같이 각 스태시에 인덱스와 같은 번호가 생성되는데 이 번호로 스태시를 특정해서 가져올 수도 있다.
git stash pop stash@{1}
명령어 | 설명 | 비고 |
---|---|---|
git stash | 현 작업들 치워두기 | 끝에 save 생략 |
git stash apply | 치워둔 마지막 항목 적용 (번호 없을 시) | 끝에 번호로 항목 지정 가능 |
git stash drop | 치워둔 마지막 항목 삭제 (번호 없을 시) | 끝에 번호로 항목 지정 가능 |
git stash pop | 치워둔 마지막 항목 적용 및 삭제 (번호 없을 시) | apply + drop |
git stash branch <브랜치명> | 새 브랜치를 생성하여 pop | 충돌 사항이 있는 상황 등에 유용 |
git stash clear | 치워둔 모든 항목들 비우기 |
5번 째의 경우 충돌이 날 수 있는 상황에서 일단 브랜치에 푼다음 이 브랜치에서 충돌 상황을 해결하고 merge를 하는 방식으로 사용할 수도 있다.