git stash

pyozz·2024년 1월 11일
0
post-thumbnail

작성하던 코드들을 스태시 공간으로 치우는 명령어

stash 명령어가 필요한 이유

예를 들어, 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 명령어로 스태시한 코드들을 가져올 수 있다.

이 둘의 차이점은

  • pop은 스태시 목록에서 스태시를 가져오고 가져온 것을 스태시 목록에서 제거한다.
  • 반면에 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를 하는 방식으로 사용할 수도 있다.

0개의 댓글

관련 채용 정보