Git Branch

김수현·2022년 9월 20일
0

Git

목록 보기
4/4
post-thumbnail

Branch: 분기된 가지

  • 프로젝트를 하나 이상의 모습으로 관리해야 할 때
    • 예) 실배포용, 테스트서버용, 새로운 시도용
  • 여러 작업들이 각각 독립되어 진행될 때
    • 예) 신기능 1, 신기능 2, 코드개선, 긴급수정...
    • 각각의 브랜치에서 작업한 뒤 확정된 것을 메인 브랜치에 통합

이 모든 것을 하나의 프로젝트 폴더에서 진행할 수 있도록!

1. 브랜치 생성 / 이동 / 삭제하기

브랜치 생성

git branch (브랜치 이름)

브랜치 목록 확인

git branch

브랜치 이동

git switch (브랜치 이름)

💡 브랜치 생성과 동시에 이동하기

git switch -c (브랜치 이름)

🗑 브랜치 삭제하기

git branch -d (브랜치 이름)


지워질 브랜치에만 있는 내용의 커밋이 있을 경우
즉 다른 브랜치로 가져오지 않은 내용이 있는 브랜치를 지울 때는
-d 대신 -D(대문자)로 강제 삭제해야 한다.

git branch -D (브랜치 이름)

✏️ 브랜치 이름 바꾸기

git branch -m (기존 브랜치 이름) (새 브랜치 이름)

여러 브랜치의 내역 편리하게 보기

git log --all --decorate --oneline --graph


2. 서로 다른 브랜치를 합치는 두 방식

  • merge : 두 브랜치를 한 커밋에 이어붙인다.
    • 브랜치 사용내역을 남길 필요가 있을 때 적합한 방식이다.
  • rebase : 브랜치를 다른 브랜치에 이어붙인다.
    • 한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합하다.
    • 이미 팀원과 공유된 커밋들에 대해서는 사용하지 않는 것이 좋다.

    2-1. merge로 합치기

a 브랜치를 main 브랜치로 merge

  • main 브랜치로 이동
  • 아래의 명령어로 병합

git merge a

  • :wq로 자동입력된 커밋 메시지 저장하여 마무리

💡 merge는 reset으로 되돌리기 가능

  • merge도 하나의 커밋
  • merge하기 전 해당 브랜치의 마지막 시점으로

병합된 브랜치는 삭제

git branch -d a

    2-2. rebase로 합치기

b 브랜치를 main 브랜치로 rebase

  • b 브랜치로 이동
    • 🟥 merge때와는 반대!
  • 아래의 명령어로 병합

git rebase main

  • 소스트리에서 상태 확인
    • main 브랜치는 뒤쳐져 있는 상황
  • main 브랜치로 이동 후 아래 명령어로 b의 시점으로 fast-forward

git merge b


3. 브랜치 간 충돌

  • 파일의 같은 위치에 다른 내용이 입력된 상황

상황 만들기

  1. a, b 브랜치 생성
  2. main 브랜치
    • A, B, C 파일의 내용 변경
  3. a 브랜치
    • A 파일의 내용 변경
  4. b 브랜치 1차
    • B 파일의 내용 변경
  5. b 브랜치 2차
    • C 파일의 내용 변경

    3-1. merge 충돌 해결하기

git merge a로 병합을 시도하면 충돌 발생

  • 오류 메시지와 git status 확인
  • 사용하는 IDE에서 해당 부분 확인

당장 충돌 해결이 어려울 경우 아래 명령어로 merge 중단

git merge --abort

해결 가능 시 충돌 부분을 수정한 뒤 git add ., git commit으로 병합 완료

    3-2. rebase 충돌 해결하기

b에서 git rebase main로 리베이스 시도하면 충돌 발생

  • 오류 메시지와 git status 확인
  • 사용하는 IDE에서 해당 부분 확인

당장 충돌 해결이 어려울 경우 아래 명령어로 merge 중단

git rebase --abort

해결 가능 시

  • 충돌 부분을 수정한 뒤 git add .
  • 아래 명령어로 계속

git rebase --continue

  • 충돌이 모두 해결될 때까지 반복
profile
안녕하세요 [22.06.19 개설]

0개의 댓글