Git 입문자 안내서 - 06 : 가지치기

2024. 1. 8. 22:48· ETC/Git
목차
  1. 가지치기?
  2. How to?
  3. 브랜치 생성
  4. 브랜치 이동
  5. 브랜치 삭제
  6. 브랜치 병합
SMALL

앞선 포스팅에서 Git을 사용하는 이유로 협업의 용이성과 테스트를 들었다.

위 두가지 모두 가지치기가 필수라고 볼 수 있는데, 이번엔 가지치기에 대해 알아보도록 하자.

가지치기?

  • 영어로는 Branch라고 하며, git 명령어 또한 git branch로 사용한다.
  • 앞서 로컬 저장소를 만들었을 당시 디렉터리 뒤에 master라고 나와있던것을 기억하는가?
    그것이 바로 브랜치명이다.
    디렉터리명 뒤에 있는 민트색 master가 브랜치명이다.
  • 나무의 줄기(메인 브랜치)에서 별도의 가지(새 브랜치)를 작성, 메인 브랜치에 영향을 주지 않고 코드를 자유롭게 추가, 수정, 삭제가 가능하다.
  • 큰 가지에서 또 다른 갈래가 뻗어나가듯, 메인 브랜치가 아닌 다른 브랜치에서 분기가 가능하다.
  • 테스트가 완료되었다면 메인 브랜치에 병합해 실서버에 적용한다.

큰 나무 줄기(파란색)에서 뻗어나온 가지(자주색)와 가지에서 뻗어나온 또 다른 가지(연두색)

How to?

브랜치 생성

  • git branch [브랜치명]으로 생성한다.
  • git branch만 입력하면 브랜치의 목록과 현재 로컬 저장소가 바라보고 있는 브랜치를 볼 수 있다.
  • 새 브랜치는 '코드를 올려보자!' 포스팅에서 사용했던 --set-upstream 옵션으로 원격 저장소에 등록해 주어야 한다.

별표(*)가 있는 브랜치명이 현재 브랜치이다. git bash를 사용할 경우 디렉터리 뒤에도 표시된다.

 

메인 브랜치를 원격 저장소에 등록해주는 과정과 동일하다.

 

브랜치 이동

  • git checkout [브랜치명]으로 현재 브랜치에서 다른 브랜치로 넘어갈 수 있다.
  • git checkout -b [브랜치명]을 사용하면 브랜치를 새로 만든 후 바로 이동한다.
  • 새로 생성한 브랜치인 경우는 Modified와 Untracked 상태인 파일이 있다면
    이동한 브랜치에서 계속해서 작업이 가능하지만,
    기존에 존재하고있던 브랜치인 경우는 Modified 상태의 코드와
    해당 브랜치에 존재하던 코드가 충돌을 일으킬 경우 checkout이 불가능하다.

someBranch  브랜치의  README.md  파일 맨 아래줄에  문구를 한줄 추가해주고 체크아웃하면 방금 작성한 문구가 보이지 않는다.

 

 

someBranch의 README.md 파일과 main의 README.md 파일의 버전이 일치하지 않아 충돌이 일어난다.

 

  • 위와 같은 경우에는 main 브랜치의 Modified 파일을 커밋하거나, 원래대로 돌려놓은 후에
    someBranch 브랜치를 main브랜치로 병합해주어야 한다.
  • main 브랜치는 직접 수정하지 않고 별도의 브랜치에서 작업 후 main 브랜치에 병합하는 것이 안전하다.

 

브랜치 삭제

  • 작업이 끝난 뒤 병합 후 더이상 해당 브랜치가 필요없을 때나 잘못 만들었을 때는 -D/-d 옵션을 사용해 삭제할 수 있다.
  • git branch -D [브랜치명] : 메인 브랜치에 병합이 되었는지 여부에 상관 없이 무조건 삭제
  • git branch -d [브랜치명] : 메인 브랜치에 병합이 되었을 경우에만 삭제, 병합되지 않았다면 삭제하지 않음.
  • 파일을 수정/커밋 후 병합하지 않은 상태로 삭제되는 것을 방지하기 위해 -d 옵션을 사용하는 것을 권장한다.

 

브랜치 병합

  • A 브랜치를 main 브랜치에 병합하려면 git checkout A 를 사용해 A 브랜치로 이동 후 git merge main을 사용한다.
  • 병합 시 충돌이 나면 충돌을 해결하기 전까지는 commit/push를 할 수 없다.

 

 

git branch와 git checkout, git merge의 옵션은 다양하지만, 입문단계에서는 위 내용으로 사용해도 충분하며,

 

다 적기엔 너무 많기 때문에 링크의 포스팅으로 대체합니다.

 

BIG
저작자표시 (새창열림)

'ETC > Git' 카테고리의 다른 글

Git 입문자 안내서 - 07: 끌어오기 요청하기  (0) 2024.07.21
Git 입문자 안내서 - 05 : 코드 변경, 추가 반영하기  (0) 2024.01.05
Git 입문자 안내서 - 04 : 코드를 올려보자!  (0) 2024.01.05
Git 입문자 안내서 - 03 : git config  (0) 2024.01.05
Git 입문자 안내서 - 02 : Github에서 받아오기  (0) 2024.01.05
  1. 가지치기?
  2. How to?
  3. 브랜치 생성
  4. 브랜치 이동
  5. 브랜치 삭제
  6. 브랜치 병합
'ETC/Git' 카테고리의 다른 글
  • Git 입문자 안내서 - 07: 끌어오기 요청하기
  • Git 입문자 안내서 - 05 : 코드 변경, 추가 반영하기
  • Git 입문자 안내서 - 04 : 코드를 올려보자!
  • Git 입문자 안내서 - 03 : git config
Jade Choe
Jade Choe
Jade's Hello, World!Jade Choe 님의 블로그입니다.
Jade Choe
Jade's Hello, World!
Jade Choe
전체
오늘
어제
  • Jade's Hello World (55)
    • Projects (3)
      • DJade MAX Respect V (3)
    • Desktop App (9)
      • Win API (2)
      • C#.Net (3)
      • C, C++ (1)
      • DirectX (0)
      • Java (2)
    • Mobile App (13)
      • Android (12)
      • iOS (1)
    • Web App (3)
      • PHP (1)
      • HTML&CSS (0)
      • Javascript (0)
      • Python - Django (2)
    • ETC (25)
      • Unity (7)
      • Ubuntu (3)
      • macOS (0)
      • Git (11)
      • Docker (1)
      • Synology (3)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • Remote-SSH
  • 컷아웃디스플레이
  • git 구축
  • git 서버구축
  • 펀치홀
  • ㄴ노
  • 에픽런처
  • 깃허브
  • 입문
  • Git
  • 깃
  • gitserver
  • 안드로이드 상태바
  • 웹뷰 안뜸
  • SU-PQR1603
  • 웹뷰 로딩
  • epicgames
  • ㅖㅗㅖ
  • github
  • 깃 서버 구축
  • 웹후크
  • 노치대응
  • 사용법
  • 웹뷰
  • 안드로이드
  • 깃 구축
  • 웹훅
  • 웹뷰 하얀화면
  • nosuchmethoderror
  • 방화벽등록

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Jade Choe
Git 입문자 안내서 - 06 : 가지치기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.