Post

[Do it! 5일 만에 끝내는 깃&깃허브 입문] 3장. 깃과 브랜치

[Do it! 5일 만에 끝내는 깃&깃허브 입문] 3장. 깃과 브랜치

“Do it! 5일 만에 끝내는 깃&깃허브 입문” 도서 바로가기

3장. 깃과 브랜치

3-1. 브랜치 알아보기

  • 브랜치(branch): 메인 줄기에서 뻗어 나온 ‘가지’처럼, 기존 코드의 상태를 보존하면서 새로운 작업을 안전하게 분리하여 진행하는 기술

브랜치가 필요한 이유

  • 메인 코드의 안정성을 지키면서 여러 기능을 동시에 개발하고 안전하게 합치기 위해 브랜치를 사용

브랜치 기능 살펴보기

  • 분기(branch): main 브랜치에서 새 브랜치를 만드는 것을 분기한다(branch)라고 함
  • 병합(merge): 분기했던 브랜치를 main 브랜치에 합치는 것을 병합한다(merge)고 함

3-2. 브랜치 만들기 및 이동하기

새 브랜치 만들기

  • git branch : 깃에서 브랜치를 만들거나 확인하는 명령
  • --online : 한 줄에 한 커밋씩 보여줌
    • 커밋을 한 줄로 표시할 경우 커밋 해시가 7자리만 보임 → 커밋 해시는 너무 길어서 앞의 7자리로 커밋을 구별 가능함

브랜치 전환하기 - git switch

  • git switch : 현재 브랜치에서 다른 브랜치로 이동하는 것 → ‘브랜치를 전환한다’

3-3. 브랜치에서 커밋하기

브랜치와 커밋의 관계 알아보기

  • --branches : 현재 작업 중인 브랜치에 국한되지 않고, 내 컴퓨터에 존재하는 모든 브랜치의 발자취(커밋)를 모아서 확인할 때 사용하는 옵션
  • --graph : 커밋의 분기와 병합 과정을 시각적인 그래프(가지 모양)로 출력하는 옵션

브랜치 간의 차이점 살펴보기

  • git log 브랜치A..브랜치B : 브랜치A에는 없고 브랜치B에만 있는 커밋들을 보여달라는 의미

3-4. 브랜치 병합하기

서로 다른 파일 병합하기

  • 기준 브랜치로 이동: 최종적으로 결과물을 합칠 브랜치(보통 main)로 이동.
    • git switch main
  • 병합 실행: 가져올 브랜치의 이름을 지정.
    • git merge [작업브랜치명]

서로 다른 브랜치에서 한 문서의 다른 부분을 수정했을 때 병합하기

  • 병합 방법 및 동작 원리
    1. 기준 브랜치 이동: 합치고자 하는 목표 브랜치(보통 main)로 이동.
      • git switch main
    2. 병합 실행: 수정 내역이 있는 브랜치를 불러옴.
      • git merge [작업브랜치명]
  • 결과: 자동 병합 (Auto-merging)

    (Git은 똑똑하게 문서 전체를 대조하여 수정된 위치를 파악함)

    • 동작: 위쪽을 고친 A 브랜치 내용과 아래쪽을 고친 B 브랜치 내용을 자동으로 합쳐 하나의 완성된 문서를 만듦
    • 충돌 여부: 수정 위치가 겹치지 않으므로 충돌(Conflict)이 발생하지 않으며, 자동으로 커밋까지 완료됨

서로 다른 브랜치에서 한 문서의 같은 부분을 수정했을 때 병합하기

  • 병합 시도: git merge [브랜치명] 입력 시 “CONFLICT” 메시지가 뜨며 병합이 일시 중단됨. ⇒ 충돌 발생
  • 파일 수정: 충돌이 발생한 파일을 열면 아래와 같은 표식이 나타남.
    • <<<<<<< HEAD: 현재 브랜치의 내용
    • =======: 구분선
    • >>>>>>> [브랜치명]: 합치려는 브랜치의 내용
  • 내용 선택: 둘 중 하나를 선택하거나 내용을 직접 수정한 뒤, 위 특수 기호들을 모두 삭제.
  • 병합 완료: 수정된 파일을 저장하고 아래 명령어를 순서대로 입력.
    • git add [파일명]
    • git commit (자동으로 병합 커밋 메시지가 생성됨.)

병합이 끝난 브랜치 삭제하기

  • 로컬 브랜치 삭제: git branch -d [브랜치명]
    • -d : 병합 확인 후 삭제하는 ‘안전모드’
    • -D : 병합 여부 무관하게 지우는 ‘강제삭제’
  • 원격 브랜치 삭제: git push [원격명] --delete [브랜치명]

cherry-pick으로 병합하기

  1. 커밋 해시 확인: 가져오고 싶은 커밋이 있는 브랜치로 가서 git log를 통해 커밋의 해시값(예: abc1234)을 복사합니다.
  2. 대상 브랜치 이동: 커밋을 붙여넣을 브랜치(예: main)로 이동합니다.
    • git switch main
  3. 체리픽 실행: git cherry-pick [커밋해시]
    • touch : 비어 있는 파일을 즉시 생성하거나, 기존 파일의 수정 시간을 현재로 업데이트하는 명령어.
This post is licensed under CC BY 4.0 by the author.