branch를 왜 사용하는거야?
코드의 복사본을 만들어 본사본(commit 기준) 상에서 원본 코드의 손상없이 코드를 작성을 위함입니다.
git branch
git branch [branch의 이름]
git branch는 branch를 생성하는 명령어입니다. gti branch 이후에 문자열로 branch의 이름을 설정할 수 있습니다.
또한 git branch [브랜치의 이름] 명령어는 현재 check-out된 commit을 기준으로 새로운 branch를 생성하는것을 의미합니다.
그렇다면! 특정 commit에서부터 branch를 생성하고 싶으면 어떻게 해야할까요?
특정 commit에서 branch 생성
1. commit hash를 이용해 branch 생성
commit hash는 commit마다 고유하게 할당받은 키값 입니다.
git branch <commit 이름> <commit hash>
commit hash로 특정 commit을 선택하고 해당 commit에서부터 branch를 생성할 수 있습니다.
2. git checkout 명령어로 Head 이동 후 branch 생성
Head는 현재 어떤 commit에 있는지 가리키는 포인터 변수와 같습니다.
git checkout <commit hash>
git chekcout 명령어를 사용하여 commit hash에 맵핑 되어있는 commit 또는 브랜치로 현재 위치를 이동합니다.(Head가 commit hash를 가리키게 됩니다.)
git branch [branch의 이름]
특정 commit으로 이동 후에 해당 commit에서부터 branch를 생성합니다.
위에 그래프를 예시로 들면
commit2에서 branch를 생성하려고 합니다.
Head를 commit2로 이동 시켜야합니다.
git checkout <commit2에 맵핑된 hash>
Head가 commit2를 가리키고 있다면 현재 위치는 commit2를 의미하고 현재 위치에서 coupon이라는 이름을 가진 branch를 생성하기 위해 아래 명령어를 실행해줍니다.
git branch coupon
git switch
git swtich [생성된 branch의 이름]
git switch 이후에 있는 branch로 Head 이동하는 명령어입니다.
git checkout VS git switch
git checkout과 git switch는 branch로 이동하는 공통점이 있습니다.
하지만 git switch 같은 경우 branch 이동 기능에 특화되어 있는 명령어입니다.
git switch를 사용해서 branch를 이동하려고 할때 전환하려는 브랜치에 작업이 아직 commit되지 않은 변경 사항이 있다면 branch 전환을 거부하고 변경 상항을 commit하거나 staging하라는 메시지가 표시됩니다.
그냥 가급적 branch 이동은 git switch를 사용할 것이다.
git merge
merge는 본인의 branch와 다른 브랜치를 병합을 시켜주는 명령어입니다.
git merge <병합하려는 branch의 이름>
git merge VS git cherry-pick
git cherry-pick 명령어 또한 병합을 도와주는 명령어입니다.
하지만 git merge와 git cherry-pick 사이에는 차이가 존재합니다.
git merge는 두 브랜치의 모든 변경 사항을 병합하는 반면,
git cherrypick은 단일 커밋만을 선택하여 복사하고 현재 브랜치에 적용합니다.
Xcode에서 branch 관리
Navigator 영역 두번째 탭에는 현상관리를 도와주는 기능들이 존재합니다.
프로젝트 폴더 내 branch 폴더 내에 현재 생성된 branch의 리스트를 확인할 수 있습니다.
선택한 branch 기준 branch 생성
main branch의 본사본을 만들어 branch를 생성합니다.
새로운 branch의 이름을 정해줍니다.
다른 브랜치로 switch
이동하고 싶은 branch를 우측 클릭하고 switch 버튼을 눌러 선택한 branch로 이동
https://codingapple.com/unit/git-3-branch-and-switch/
git의 branch 만들기 - 코딩애플 온라인 강좌
0:00 branch 만드는 법 3:39 그만보고 직접 해보쇼 5:30 브랜치 합치기 (merge) 6:49 합칠 때 conflict 발생가능 커밋하면서 계속 코드짜다보면 갑자기 새로운 기능을 추가하거나 그래야하는 경우가 있습니
codingapple.com
'Git 🐈' 카테고리의 다른 글
git) git(add, commit, push) 에 대하여 & Xcode 내 버전 관리 (0) | 2024.03.18 |
---|