깃에 대해서는 적당히 알았고 이정도면 대충 쓸 정도는 되겠거니~싶었지만 쉽지 않았다. 그래서 오늘은 깃 명령어들을 정리해볼까 한다.
git checkout: 처음에는 git checkout과 git switch를 구분하지 못했었다. 둘 다 브랜치 갈아 끼우는 방식 아닌가? 싶었으나 git checkout의 기능은 브랜치 갈아 끼우는 것 뿐 아니라 hash로도 돌아갈 수 있었다. 예를 들면 다음과 같다.
git checkout <hash_name> -> hash_name의 상태로 돌아감
git checkout development -> development의 최신 상태로 돌아감
내가 시도해야 했던 것은 저 bede 해시의 내용 중 필요한 것들만 development에 머지시키는 것이었다. 그러기 위해 명령어를 찾는 도중 cherrypick이라는 명령어를 알게 되었다.
git cherry-pick: 체리픽은 원하는 커밋 해시의 내용만 병합시키는 손쉬운 커밋 방식이라 볼 수 있다.

예를 들어 34b4cab과 13f03ab를 master 브랜치에 적용시키기 위해서는 다음과 같은 방식을 수행할 수 있다.
# 우선 master 브랜치에 들어간다
git switch master
# 이후 체리픽을 수행한다
git cherry-pick 34b4cab
git cherry-pick 13f03ab
이 방식은 생각지도 못한 단점이 있었다. 바뀐 내용을 통째로 development에 덮는 것이 아니라 해당 커밋에 대한 내용만을 담는다는 것이었다. 고로 모든 내용을 통째로 담기 위해서는 840d7f3도 체리픽을 해야 했다. 이전까지의 과정도 통째로 담는, 말 그대로 덮어 씌우는 방식을 택하기 위해 찾아보니 그냥 merge 하면 되었다...
# 우선 master 브랜치에 들어간다
git switch master
# 이후 머지한다
git merge 34b4cab
이렇게 하면 통째로 파일을 덮을 수 있다. 먼 길을 돌아왔지만 배운게 있어 다행이다.