이상한 코드가 있다고 칩시다.
그 코드를 잠깐 치워놓고 개발하고 싶으면 주석처리해도 되겠지만 git stash 명령어를 이용해도 잠깐 코드를 치울 수 있습니다.
# 새 프로젝트 폴더 app 생성
git init
# a 라는 파일 생성 후 수정
# ------------------------------a.txt
aaaaaaaaaaaaa
# -----------------------------------
git add .
git commit -m '어쩌구'
# a의 파일의 수정
# ------------------------------a.txt
aaaaaaaaaaaaa
bbbbbbbb # 잠깐 잘래내서 보관하고 싶음
# -----------------------------------
git stash # 임시 공간으로 이동
git stash list # 보관된 코드 목록 조회
stash@{0}: WIP on main: 8978be9 어쩌구
# 최근 commit과의 차이점을 전부 보관해주는 git stash
# 다만, staging 안해놓은 새 파일은 stash가 안될 수도 있음
# ------------------------------a.txt
aaaaaaaaaaaaa
ccccccc
# -----------------------------------
# 📝 git stash save '메모'
git stash save 'ccc라고 적음' # 메모도 함께 입력 가능
터미널에 git stash 입력하면 방금 작성한 bbbb 어쩌구 코드는 잠깐 다른 공간에 보관됩니다.
(그래서 파일들이 최근 commit 상태로 되돌아갑니다.)
git stash save '메모'로 메모도 함께 입력 가능합니다.git stash list는 현재 stash 되어있는 코드 목록을 전부 출력해주는 명령어입니다.git stash 했던 코드가 여러개 있으면 가장 최근에 보관했던 코드부터 먼저 불러옵니다.
git stash pop # 가장 최근 stash 불러오기
가장 최근에 들어온 것 부터 먼저나갑니다.
물론 현재 코드와 겹치는 부분이 있으면 conflict나니까 알아서 해결하면 됩니다.
삭제할 id는 git stash list 하면 보이는 0, 1, 2 이런 숫자 넣으면 됩니다.
git stash list
stash@{0}: WIP on main: 8978be9 어쩌구
# 특정 stash 삭제
# 📝 git stash drop 삭제할id
git stash drop 0
git stash clear # 모든 stash 삭제
전체 말고 일부 코드만 git stash 하고싶으면 다음 명령어 씁시다.
그럼 파일을 훑어주면서 stash할 지 의견을 물어보는데 y/n 으로 잘 대답하면 됩니다.
git stash -p
Q. 주석처리해놓는게 더 쉬울듯
실은 코드를 주석처리하는거랑 용도가 비슷한데 주석처리된 코드는 commit할 때 반영됩니다.
그렇게 되면 주석도 commit 기록에 남아서 기록이 더러워질 수 있습니다.
주석처리한 내용을 commit 해버리기 싫을 때 git stash 쓰면 유용합니다.
또는 기능 A, B를 만드는데 기능A는 완성되었고, 기능B는 완성이 안됐을 때,
팀장이 "기능A 부분만 빨리 commit하고 merge 하라"고 하면 그럴 때 기능B를 git stash 해놔도 좋을듯요.
Q. 브랜치 새로 만들어서 거기다 코드짜놓는거랑 다를바 없는데요?
들킴. 간단히 브랜치만들어서 거기 보관하는 것도 나쁘지않습니다.