개발 기록 남기기✍️

Git 기초 (3) - 차원 넘나들기 본문

기초 지식/git

Git 기초 (3) - 차원 넘나들기

너해동물원 2022. 12. 9. 10:56

1. 여러 Branch 만들어보기

1-1. Branch : 분기된 가지 (다른 차원)

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

 

1-2. 브랜치 생성 / 이동 / 삭제

브랜치 생성

git branch (브랜치명)

 

브랜치 목록 확인

git branch

 

브랜치 이동

git switch (이동할 브랜치명)

 

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

git switch -c (브랜치명)

 

브랜치 삭제

git branch -d (삭제할 브랜치명)

 

브랜치 강제 삭제

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

 

브랜치 이름 바꾸기

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

 

1-3. 여러 브랜치에서 작업

git switch를 통해 브랜치를 이동하면서 작업 후 결과를 살펴보려고 한다.
git log는 위치한 브랜치에서의 내역만 볼 수 있다.

 

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

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


2. Branch를 합치는 두 가지 방법

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

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

 

2-1. merge로 합치기

add-coach 브랜치를 main 브랜치로 merge하려고 한다.

  • main 브랜치로 이동한다.
  • 아래의 명령어로 병합
    git merge add-coach
  • :wq로 자동입력된 커밋 메시지 저장하여 마무리

 

❗merge는 reset으로 되돌리기가 가능하다.

  • merge도 하나의 커밋
  • merge 하기 전 해당 브랜치의 마지막 시점으로 되돌릴 수 있다.

 

병합된 브랜치는 삭제한다.

git branch -d add-coach

 

2-2. rebase로 합치기

new-teams 브랜치를 main 브랜치로 rebase하려고 한다.

  • merge와는 다르게 new-teams 브랜치로 이동한다.
  • 아래의 명령어로 병합
    git rebase main
  • 소스트리에서 상태 확인해보면 main 브랜치는 뒤쳐져 있는 상황이다.
  • main 브랜치로 이동 후 아래 명령어로 new-teams의 시점으로 fast-forward한다.
    git merge new-teams
  • new-teams 브랜치 삭제

3. 충돌 해결하기

브랜치 간 충돌

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

 

3-1. merge 충돌 해결하기

  • 당장 충돌 해결이 어려울 경우 아래 명령어로 merge 중단
    git merge --abort
  • 해결 가능 시 충돌 부분을 에디터로 수정한 뒤 git add ., git commit으로 병합 완료

 

3-2. rebase 충돌 해결하기

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

해결 가능 시

  • 충돌 부분을 수정한 뒤 git add .
  • 아래 명령어로 계속
    git rebase --continue
  • 충돌이 모두 해결될 때까지 반복
  • main에서 git merge 합칠 브랜치명으로 병합한 뒤 브랜치 삭제