본문 바로가기
뒷북 정리 (국비 교육)/git, github

Git command : stash

by 규글 2022. 3. 30.

stash : 숨겨두기

 master branch에 새롭게 merge할 기능을 만들기 위해서 작업 branch를 만들어서 작업하는 중이었다고 가정해보자. 그런데 작업 중에 갑자기 다른 branch로 이동해서 해결해야할 일이 생겼다면 어떤 문제가 발생할까?

 

 기존에 작업하던 branch를 'stash_test1', 이동하려는 branch를 'stash_test2' 라고 명명해서 작업해보았다. 파일 g와 h 두 개를 만들고 g를 staging 하고 다른 branch로 이동하면 이 두 가지 내용이 따라오고 있는 것을 status 명령어를 통해서 확인하였다. 이것이 문제이다. 하지만 이 문제를 해결하는 것이 바로 stash 이다.

 

>>> git stash -u

>>> git stash list

>>> git stash pop

 stash 명령어를 이용해서 기존에 작업중인 내용들을 숨길 수 있다. 이때 사용한 u 옵션은 untracked file을 포함해서 작업중인 파일을 숨기는 목적에 사용한다. 이렇게 숨긴 친구들은 commit을 해도, push를 해도 따라가지 않는 친구들이 된다. 그리고 이렇게 숨긴 친구들의 목록을 list를 통해 볼 수 있고, 숨겨둔 친구들을 pop을 통해 다시 숨기지 않을 수 있다.

 

>>> git checkout .

>>> git clean -fd

 만약 작업하던 중에 모든 계획이 취소되었다고 생각해보자. 게다가 작업하던 파일이 많다면 어떻게 해야할까? 이 경우 단순히 작업하던 branch를 삭제한다고 해서 작업하던 내용들이 깔끔하게 사라지는 것이 아니다. branch를 삭제하려면 해당 branch가 아닌 다른 곳에 위치해야하는데, 그러면 작업하던 파일들이 함께 이동하기 때문에 그렇다.

 그래서 파일을 지워줘야하는데, 우선 'git checkout .'를 하면 수정하던 파일을 모두 지울 수 있다. 다만 이때 untracked file은 지워지지 않는다. 나머지 친구들은 clean 명령어를 사용해서 지워준다. 이때 사용하는 옵션인 f와 d는 file과 directory까지 모두 지워주기 때문에 f와 d인 것은 아니다. 옵션 fd는 untracked file과 directory들까지 지우기 위한 것이다. 혹시 staging한 파일이라면 다시 unstaging해서 지워주면 된다.

'뒷북 정리 (국비 교육) > git, github' 카테고리의 다른 글

eclipse에서의 Git  (0) 2022.04.05
Github(원격저장소 remote repository) : remote, push, fetch, pull, pr  (0) 2022.03.30
Git command : reset  (0) 2022.03.30
Git command : merge  (0) 2022.03.30
Git command : branch  (0) 2022.03.30

댓글