뭐든 즐기면서 ;)

Git stash 명령어 본문

IT정리/Git Hub

Git stash 명령어

Tada.*+ 2021. 11. 20. 19:14
728x90

※ git stash : branch에서 작업하던 내용을 stack에 잠시 저장해 두는 것입니다.

A branch에서 작업하던 내용을 stash 명령어를 이용하여 stack에 넣어둔 후, B branch를 checkout하여 작업하고, 다시 A branch로 돌아와 작업을 이어서 진행할 때 유용합니다.


- 사용방법 (현재 수정 또는 추가한 파일이 있다는 가정하에 진행합니다.)

// 기본
> git stash

// 추적중이지 않은 파일까지 모두 저장.(추측으로는 staged되어 있는 파일까지 포함한단 뜻인 것 같음)
> git stash -u

git stash 실행 결과
git stash를 실행한 후 git status를 확인해 본 결과. 'working tree clean'을 볼 수 있음.

 

* 추적중이지 않은 파일이 뜻하는 것은 아래 이미지와 함께 설명드리겠습니다. (글쓴이의 추측입니다.)

위 이미지를 보면 branch를 바꾸려 할 때 config-local.xml 파일이 수정되었으니 커밋 또는 stash영역에 넣은 후 진행하라고 뜨는데, 이 파일은 ignore하도록 설정을 해둔 상태로 git status를 했을 때 수정목록에 뜨지 않습니다(추적이 되지 않는 상태). 이때 git stash -u를 하면 해당 파일까지 stash영역에 넣을 수 있습니다.

그냥 git stash를 했을 경우 위에 이미지에 보이는 것처럼 change된 것이 없다고 뜹니다.


- git stash 관련 명령어

// stash 상태의 목록 보기
> git stash list

git stash list 화면 결과 ( 'stash@{1}' 은 이전에 stash한 항목이고, 최근에 'stash@{0}' 이 최근에 stash한 항목입니다. ) 가린 것은 stash를 실행 했던 branch 명입니다.

// stash를 꺼내와 적용할 수 있습니다.
> git stash apply

// stash할 때의 상태 그대로, staged상태까지 그대로 적용됩니다.
$ git stash apply --index

git stash apply --index 화면 결과( 수정된 파일이 보입니다. )

// 스택에서 제거(가장 최근에 stash한 항목이 먼저 drop됩니다.)
> git stash drop

// apply 후 drop
$ git stash pop

git stash drop 화면결과 (drop한 stash의 고유번호(..?git history 번호..용어 생각 안 남.)가 보입니다.)

# Stash할 당시의 커밋을 Checkout한 후 새로운 브랜치를 만들고, 여기에 stash를 적용함.
> git stash branch 브랜치명

> git stash branch 브랜치명 : stash해놓고, 작업을 계속 하다가 stash를 적용하려고 하면 충돌이 발생할 수도 있다. 이를 방지하기 위해 먼저 git stash branch명령어로 테스트를 해보고, stash를 삭제하면 된다.

(써봐야 알 듯...아직 사용해 본 적이 없습니다.)

728x90
Comments