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 |