[git] [에러일지] 임시저장하고 다른 브랜치 작업을 하고 싶을 때

핫걸코더지망생·2023년 6월 2일
0

git & github

목록 보기
7/9
post-thumbnail

요즘 오픈소스 프로젝트 하면서 git에서 이전에 경험해 보지 못한 거종거양의 오류들을 만나는 신나는 경험을 하고 있다 🐱‍💻



📍오류발생

error: Your local changes to the following files would be overwritten by checkout:

오픈소스에는 약 30명의 사람들이 각 파트로 나눠진 개별 branch를 통해 작업하고 있다. 그러다 보니 branch를 이동하며 작업해야 할 때가 있는데 main brnach에서 header branch로 이동 하던 중 발생한 오류다.



📌오류원인

다른 브랜치로 이동하기 전 작업하고 있던 브랜치에서 변경사항이 있는데, 커밋 즉 저장하지 않을 때 발생하는 오류



🎈오류해결 방법

1. git stash

stash : 워킹 디렉토리에서 수정한 파일들만 저장한다. 아직 끝내지 않은 수정사항을 브랜치가 달라져도 스택에 잠시 저장했다가 나중에 다시 적용할 수 있다

2. git checkout <이동하려는 브랜치> 또는 git pull

본인이 오류 이전에 하려고 했던 명령어 실행

4. git checkout <원래 작업하던 브랜치>

작업이 끝났다면 원래 임시저장한 브랜치로 복귀

5. git stash pop (임시저장한 내용을 삭제하고 싶을 때)

stash pop : 스택 내 저장된 작업을 복원

5-1. git stash drop (임시저장한 내용을 지우고 싶을 때)

stash drop : 스택 내 저장된 작업을 삭제
stash drop stash@{0} - 특정 stash id 삭제 (git stash list 치면 나오는 id)

+ 위 3가지 단계를 한번에 요약하여 실행하고 싶을 때

- checkout 진행시

git stash && git checkout [변경할 branch 이름] && git stash pop

- pull 진행시

git stash && git pull origin [branch 이름] && git stash pop





+📑 브랜치 이동 명령어

checkout 과 switch 똑같은 기능인데 왜 이름이 다르죠?

  • checkout : Switch branches or restore working tree files
  • switch : Switch branches

    switch는 위 설명처럼 브랜치를 변경하는 부분만 담당한다. Git 2.23 에서 도입되었다. checkout에 기능이 너무 많기 때문에 대체되었다고 한다.
  • 브랜치를 만들면서 이동하고 싶다면 : $ git switch -c <브랜치명>



📚 reference

profile
산은 산, 물은 물, 코드는 코드

0개의 댓글