tgool
Tgool
tgool
전체 방문자
오늘
어제
  • 분류 전체보기
    • Data Science
      • AI
      • Data Mining
      • ML(Machine Learning)
    • Computer Science
      • 자료구조
      • 알고리즘
      • 시스템 프로그래밍
      • 운영체제
      • 컴퓨터 구조
      • 컴퓨터 네트워크
      • 데이터 베이스
      • 파이썬
      • 자바
      • 아두이노
    • Math
      • 통계학
      • 확률론
      • 선형대수학
      • 수리통계학
      • 회귀분석
    • TOFEL
    • Git
    • Plan
    • Book
    • Working out
      • 영양과 생활
      • 운동 정보
      • 운동 기록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
tgool

Tgool

[Git] 브랜치의 개념 및 체크아웃 이용 방법
Git

[Git] 브랜치의 개념 및 체크아웃 이용 방법

2023. 3. 10. 13:56
  • 브랜치 (branch): 기능 변경을 하고 싶을 때 생성 및 사용
  • 머지 (merge): 한 브랜치의 내용을 다른 브랜치에 반영
  • 체크아웃 (checkout): 저장소에서 특정 커밋이나 브랜치로 돌아가고 싶을 때 사용

프로그램 기능 변경하기 위해 브랜치를 사용하자

  • 이미 돌아가고 있는 프로그램에서 기능을 바꾸고 싶은 일이 생길 수 있다.
  • 그럴 때 어떻게 해야 할까?
  • 보통 초보 개발자들은 주석을 활용한다.
  • 돌아가고 있는 부분을 삭제하면 아까우니까 주석 처리하고 개발한다.
  • 시간이 지나면 코드가 엉망진창으로 짜장짬뽕 믹싱이 되는데 이런 코드를 스파게티 코드라고 한다.
  • 이런 상황을 막기 위해서 브랜치를 사용할 수 있다.

상황 예시

  1. 기존 문서에 새로운 설명을 추가했다.
  2. 내용이 맘에 안 들어서 다시 작업을 하고 싶다.
  3. 혹시 모르니 기존 내용은 남겨 두고 싶다.
  4. 새로 작업을 한 후에 비교해 보고 더 좋은 걸 결과물로 반영하자.

현재 상태

  • 현재 폴더에는 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
    'Git' 카테고리의 다른 글
    • [Git] 충돌 해결하기
    • [Git] 병합(merge)
    • [Git] 깃 checkout을 소스 트리를 이용해 변경 내용 취소하기
    • [Git] 소스 트리 업로드하기(push)
    tgool
    tgool

    티스토리툴바