2023. 11. 22. 23:52ㆍ프로그래밍/Git
작업을 하다보면 내 로컬의 히스토리가 이상하게 꼬여있거나 혹은 로컬에서 브랜치를 바꿔서 작업하다가
그 사실을 잊고 변경사항을 만들어버렸을 때 커밋은 하지 않고 변경사항을 그대로 가지고 다른 브랜치로 이동하고 싶을 수 있다.
이럴때는 git stash를 이용하면 된다.
git add . 한 상태라면 변경사항이 적용돼있다.
git stash는 로컬의 변경사항을 인식해야지만 그 변경사항 그대로 임시적으로 저장해놓을 수 있다.
따라서 git add를 해서 git status로 변경사항을 감지하지 못하고 있다면 git reset을 입력하면 변경사항을 add하지 않은 상태로 다시 돌릴 수 있다. 그러나 git add . 도 하고 git commit 까지 날린 상태라면 다음과 같이 commit을 날려야한다.
git reset HEAD~1 --soft
이는 로컬의 변경사항은 유지한채 커밋은 없애겠다는 뜻이다.
이 명령어를 사용하고 난 후에 status를 해보면 다시 modified인 상태의 파일들이 감지된다.
그렇다면 git stash를 통해 현재 변경사항을 stash해놓는다.
이후에 내가 원하는 브랜치로 checkout으로 바꾼다.
그리고 stash한 목록을 보기 위해서는 git stash list 를 입력하고
stash를 현재 로컬에 저장하려면 git stash apply stash@{1} 과 같이 사용한다.
그러고 git status를 해보면 현재 로컬에 변경사항이 발생한 것을 확인할 수 있다.
git stash show stash@{1}을 하면 stash한 내용이 뭔지도 알 수 있다.
'프로그래밍 > Git' 카테고리의 다른 글
[Git] "fatal: could not read username for no such device or address" 해결 (0) | 2024.11.20 |
---|---|
[Git] fast forward, rebase, merge, pull, checkout, switch, HEAD 등에 대한 개념 (0) | 2023.11.09 |