A 브랜치에서의 수정사항을 git add하거나 commit하지 않으면 commit id가 없으므로 다른 브탠치로 checkout할 수 없다. 이런 경우 stash를 이용한다.
> git stash [stash name here]
브랜치간에 가져오고 싶은 파일이 있을 경우 cherrypick을 사용한다.
stash도 commit id가 있고, 로컬에서는 브랜치에 국한되지 않고 commit id가 있으면 언제든 접근 가능하다. cherrypick도 같은 관점이다.
그래서 깃에서 중요한 건 commit이다 ! 커밋 아이디만 있다면 그래프에서는 사라졌을 지라도 언제든 checkout 가능하다. 따라서 A 브랜치에서 B 브랜치로 checkout하는 것도 사실 commit id를 사용해서 이동하는 것이기 때문에, <commit === A 브랜치> 라고 생각했던 개념은 틀렸다. 브랜치는 commit id가 있는 어디든 갈 수 있다. 이게 뽀인트 !