- 브랜치 (branch): 기능 변경을 하고 싶을 때 생성 및 사용
- 머지 (merge): 한 브랜치의 내용을 다른 브랜치에 반영
- 체크아웃 (checkout): 저장소에서 특정 커밋이나 브랜치로 돌아가고 싶을 때 사용
프로그램 기능 변경하기 위해 브랜치를 사용하자
- 이미 돌아가고 있는 프로그램에서 기능을 바꾸고 싶은 일이 생길 수 있다.
- 그럴 때 어떻게 해야 할까?
- 보통 초보 개발자들은 주석을 활용한다.
- 돌아가고 있는 부분을 삭제하면 아까우니까 주석 처리하고 개발한다.
- 시간이 지나면 코드가 엉망진창으로 짜장짬뽕 믹싱이 되는데 이런 코드를 스파게티 코드라고 한다.
- 이런 상황을 막기 위해서 브랜치를 사용할 수 있다.
상황 예시
- 기존 문서에 새로운 설명을 추가했다.
- 내용이 맘에 안 들어서 다시 작업을 하고 싶다.
- 혹시 모르니 기존 내용은 남겨 두고 싶다.
- 새로 작업을 한 후에 비교해 보고 더 좋은 걸 결과물로 반영하자.
현재 상태
- 현재 폴더에는 hello.md 파일이 있고 커밋까지 되어 있다.
- 커밋 로그는 아래 그림처럼 되어 있다.
새로운 브랜치 생성하기
- 눈치를 챈 분도 있겠지만 사실 우리는 브랜치라는 걸 이미 사용하고 있다.
- 아무 설정도 안 하고 git을 사용하면 위 그림 왼쪽의 굵은 글씨에 보이는 것처럼 master(main) 브랜치라고 하는 기본 브랜치에서 작업을 하게 된다.
- 브랜치가 뭐냐고 물어본다면 가상의 작업 환경이라고 생각하면 된다.
- 사실 메인(마스터) 브랜치는 사람들과 공유하고 싶은 최종 결과물이 있어야 하는 곳이다.
- 브랜치를 새로 생성하면 기존의 메인(마스터) 브랜치의 내용은 그대로 보존하면서 새로운 작업 환경을 생성하는 것이라 생각하자.
- git에서 가장 중요한 게 커밋이라면 그 다음은 브랜치라고 해도 과언이 아니다.
- 디자이너는 작업을 보존하고 싶을 때 폴더를 하나 생성한다. '2018-3-14-모솔-화이트데이-시안2' 이런 식으로
- 그거랑 논리적인 의미는 같다.
- 브랜치의 이름은 일단 새로 구현할 기능 이름으로 하자.
- 여기서는 'version2'로 이름을 붙이고, 마지막 커밋의 직전 커밋으로부터 생성을 하자.
- 직전 커밋을 선택하고 우클릭 - 브랜치 - 새 브랜치를 선택하고 새로운 브랜치 이름 'version2' 를 입력해서 새로운 브랜치를 생성해 보자.
- 생성 후에는 version2라는 브랜치가 생기는데, 소스트리의 기능으로 자동으로 현재 브랜치가 version2가 된다.
- 왼쪽 메뉴를 보면 version2가 생기고 동그라미와 굵은 글씨로 표시된 걸 볼 수 있다.
- 그리고 오른쪽 커밋 로그를 보면 master보다 한 단계 아래 커밋에 version2가 생긴 것을 볼 수 있다.
현재 브랜치 변경하기
- 깃에서는 한 번에 하나의 브랜치에서만 작업이 가능한데 이를 현재 브런치 또는 헤드(HEAD) 브랜치라고 부른다.
현재 작업 중인 브랜치 = 헤드 브랜치
- 지금 헤드 브랜치는 뭘까?
- 방금 전에 생성한 브랜치 version2 이다.
- 브랜치를 변경하기 위해서는 체크아웃(checkout)이란 명령을 사용한다.
- 사실은 아무 커밋으로나 돌아갈 수도 있지만 일단은 브랜치 변경을 위해 사용한다.
- 소스트리를 사용하면 정말 쉽게 브랜치 체크아웃을 할 수 있다.
- 왼쪽 메뉴의 브랜치 이름을 더블 클릭만 하면 된다.
- 연습 삼아 현재 브랜치를 main로 변경했다 다시 version2로 돌아와 봅시다.
- 더불어 파일의 내용도 살펴 보자.
- 체크 아웃 할 때마다 파일의 내용이 변경되는 것도 볼 수 있다! 신기하죠?

새로운 기능 추가하는 경우
- 다시 version2 브랜치로 돌아와서 이번에는 실제 파일의 내용을 고쳐 보자.
- 편의상 기존의 hello.md 파일에 내용을 추가합니다.
작업후 추가할 내용
## 새로운 브랜치 만들기
- 원하는 커밋을 만들고 우클릭, 새 브랜치 이름 입력하면 커밋으로부터 브랜치가 생긴다.
## 원하는 브랜치로 돌아가기
- checkout: 왼쪽의 브랜치 메뉴에서 브랜치를 선택하고 더블 클릭하면 해당 브랜치로 돌아간다.
- 위와 같이 변경한 후에 스테이지에 변경 사항을 올리고 커밋을 하면 새로운 커밋이 하나 생긴다.
- 그런데 아래 그림처럼 version2 브랜치만 새로 생긴 커밋을 가르키게 된다.
- 그럼 master 브랜치는요?
- 예상했을 수도 있지만 변하지 않는다.
- 그리고 놀랍게도 가지가 하나 생겨났다! 짜잔! 왜 브랜치라고 부르는지 조금 이해가 되죠?
다시 체크아웃 해보기
- 이제 우리는 두가지 버전이 생겼다.
- master 브랜치 버전과 version2 버전이지요.
- 각각의 체크아웃하면 각 브랜치의 내용으로 폴더안의 파일이 변한다.
- 두 가지를 비교해 보고 고민 후에 최종적으로 하나를 선택하게 되겠죠?
- 그럴 때 병합을 선택하게 된다. 병합은 다음 게시글에!
'Git' 카테고리의 다른 글
[Git] 충돌 해결하기 (0) | 2023.03.13 |
---|---|
[Git] 병합(merge) (0) | 2023.03.10 |
[Git] 깃 checkout을 소스 트리를 이용해 변경 내용 취소하기 (0) | 2023.03.10 |
[Git] 소스 트리 업로드하기(push) (0) | 2023.03.10 |
[Git] 소스 트리를 이용해 깃 커밋(commit) 하기 (0) | 2023.03.10 |