[git] stash 수정한 파일 임시 저장

 

 

git stash

 

 

 

 

git stash는 Git에서 작업 중인 변경 사항을 임시로 저장하고,

작업 디렉토리를 깨끗한 상태로 유지하기 위한 명령어입니다.

 

  • git stash: 현재 변경 사항을 스택에 저장하고 워킹 디렉토리를 깨끗한 상태로 만듭니다.
  • git stash list: 저장된 stash 목록을 확인할 수 있습니다.
  • git stash apply: 마지막으로 저장된 stash를 워킹 디렉토리에 적용합니다. stash는 스택에서 제거되지 않습니다.
  • git stash pop: 마지막으로 저장된 stash를 워킹 디렉토리에 적용하고, 스택에서 제거합니다.
  • git stash drop: 특정 stash를 스택에서 제거합니다.
  • git stash clear: 모든 stash를 제거합니다.

 

 

git init
(f1파일 생성)
git add .
git commit -m "commit1"

git stash 작업 테스트를 위해 f1.txt파일을 만들고 add 후 commit 하여 줍니다.

 

f2.txt파일을 생성하여 주었습니다.

 

 

 

git add f2.txt
git status

git add를 통해 f2.txt파일을 버전관리에 추가하여주었지만 아직 commit은 안된 상태입니다.

문제는 여기서 새로운 기능개발이 필요하여 이동을 하여야 할때 작업중인 파일이 남아있다는 것입니다.

이때 git stash를 사용하면 commit하지 않은 파일은 숨겨두고 다른 브런치로 이동이 가능합니다.

 

 

 

git stash : commit하지 않은 내용 임시저장하여 숨기기

git stash

git stash 명령어를 입력하면 아직 commit하지 않은 파일과 내용을 숨김처리하여 임시저장소에 저장하게 됩니다.

아직 commit하지 않는 f2.txt파일이 사라진 것을 확인할 수 있습니다.

 

 

git stash list : stash에 저장된 목록 보기

git stash list

git stash list를 입력하면 stash 임시저장소에 저장된 목록을 볼 수 있습니다.

f2.txt파일의 내용이 stash list에 올라간 것을 알 수 있습니다.

 

 

 

git checkout -b winter

git checkout -b [새로운브런치] 새로운 브런치를 생성하여 checkout하여도 잘 되는 것을 볼 수 있습니다.

 

 

git add f3.txt

winter 브런치에서 f3.txt파일을 생성 후 add 하여 git에 등록하여 주었습니다. 

 

git commit -m "commit 2"

winter 브런치에서 f3파일을 commit해 주었습니다.

 

git checkout master

master브런치로 이동하여 줍니다.

 

git merge winter

git winter에서 수정한 내용을 master branch에 병합해주었습니다.

 

 

 


 

 

git stash apply : 임시저장 파일 불러오기

git stash apply

git stash apply 명령어를 통해 git stash list의 가장 최근 내용을 가져온다.

숨겨두었던 f2.txt가 불어와진 것을 볼 수 있다.

 

 

하지만 git stash list를 하면 여전히 임시저장 목록이 남아있는것을 볼 수 있다.

git stash apply는 거내오기만 하고 stash list에서 지우지는 않는다.

 

 


 

git stash clear : stash 목록 지우기

git stash clear

clear명령어를 실행하면 stash list에 있던 모든 목록이 삭제된것을 볼 수 있다.

 

 


 

git stash pop : 임시저장파일 불러오기 + list에서 삭제

git stash pop

pop명령어는 가장 최근 내용을 가져오고 stash list에서 삭제한다.

다시 git stash list를 입력해 보아도 list가 비어있는것을 확인할 수 있다.