git switch 란?
브랜치를 변경(switch)하는 명령어이다.
생기게 된 이유
사실 브랜치를 옮기는데는 git checkout 이라는 기존의 명령어가 있었다. 그러나 이 명령어는 너무 많은 기능을 가지고 있어 문제가 됐다. 한 명령어가 너무 많은 기능을 가지게 되면 소위 객체지향에서 말하는 GOD Object 와 같은 설계가 탄생할 수 있기 때문에 git 시스템은 버전 업그레이드를 거치며 git switch 라는 명령어를 새로 만들게 되었다.
각각의 명령어는 어떤 책임을 가져가게 되었는가?
checkout: 브랜치를 이동하거나 워킹 트리의 파일을 복원한다.switch: 브랜치를 이동한다.restore: 워킹 트리의 파일을 복원한다.
기존의
checkout이 명료한 명령어들로 나뉘었다. 단, 기존의git checkout을 이용하는 사용자가 불편함을 느끼며 다른 명령어를 익힐 필요는 없는 방식으로 하위 호환성을 지키며 업데이트를 진행했다.
간단히 정리하자면, 아래와 같다.
git checkout의 일부 기능이git switch와git restore로 분리되었다.
git switch 사용법
develop 브랜치로 이동하고 싶을 때
git switch develop
develop 브랜치가 없을 때, 브랜치를 생성 후 이동하고 싶다면
git switch -c new-branch
특정 시작 시점으로부터 새 브랜치 생성 후 이동하고 싶다면
git switch -c new-branch2 <커밋 번호 ex) 515c633a>
git switch -c new-branch2 <특정 브랜치 이름 ex) upstream/main>
이를 공식 문서에서
<start-point>라고 표현한다.
느낀점
'멀쩡하게 잘 쓰던 checkout 이 있는데 왜 굳이 이걸 다른 명령어 두개로 나눴지?' 라고 생각이 들 수도 있다. 하지만 이러한 식의 개발이 계속되면, 시스템이 계속 발전하고 커졌을 때 생각치못한 어마어마한 복잡함과 마주할 수 있다고 생각한다.
깃의 이와 같은 변화를 보며 우리가 만드는 소프트웨어에서도 하나의 객체가 너무 많은 책임을 지고있지는 않은지 다시 한번 생각해볼 기회가 될 수도 있을 것이다.
레퍼런스
'깃' 카테고리의 다른 글
| git show 명령어란? (0) | 2023.06.10 |
|---|---|
| git diff 명령어란? (0) | 2023.06.10 |
| Git Object (깃 오브젝트, 깃 객체) 란? (0) | 2023.06.10 |
| git cat-file 명령어란? (0) | 2023.06.07 |
| git stash 명령어 설명과 예시 정리 (0) | 2022.06.05 |