[Git] Branch 관리

cosmos-JJ·2023년 9월 3일
0

Git

목록 보기
1/1
post-thumbnail

Git을 공부하게 되면서 Branch라는 내용을 배우게 되었는데, 많은 개발자들이 Branch라는 것이 있기 때문에 협업을 할 수 있고 체계적이게 파일을 관리할 수 있다는 것을 알게 되었다. 처음 접하는 만큼 나누어진 브랜치를 합치고 충돌을 제거하는 부분에서 어려움을 느끼게 되어 블로그에 정리하면서 한번더 되새김을 해보려고 한다.

Branch란

Branch란 프로젝트를 하나 이상의 모습으로 관리해야하거나 여러 작업들이 각각 독립되어 진행할 떄 이 모든 것을 하나의 프로젝트 폴더에서 진행할 수 있도록 도와주는 기능이다.

Branch의 생성/이동/삭제

➡ branch 생성

$ git branch (branch 이름)

➡ branch 목록 확인

$ git branch

➡ branch 이동

$ git switch (branch 이름)

➡ branch 생성과 동시에 이동

$ git switch -c (branch 이름)

➡ branch 삭제

$ git branch -d (branch 이름)

$git log를 이용하면 위차한 브랜치의 내역만 볼 수 있기 떄문에 여러 브랜치의 내역을 편리하게 보려면
$git log --all --decorate --oneline --graph 을 이용하자
또한 여러 브랜치의 내역을 확인할때는 GUI를 이용하는 것이 더 편리하다

Branch 합치는 방식

➡ Merge

  • 두 브랜치를 한 커밋에 이어붙인다
  • 브랜치의 사용내역을 남길 필요가 있을 때 적합한 방식
  1. main 브랜치로 이동

  2. $ git merge (merge할 branch이름) 입력

  3. :wq 자동입력된 커밋 메세지를 저장 후 마무리

  4. merge한 브랜치 삭제 (merge 하고 남은 브랜치는 바로 정리해주는 것이 좋다)


➡ Rebase

  • 브랜치를 다른 브랜치에 이어붙인다
  • 한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합
  • 협업할 때는 지양하는 것이 좋다
  1. Merge와 반대로 rebase 할 브랜치로 이동
  2. $git rebase main 입력
  3. 현재 mian 브랜치는 뒤쳐져 상황으로 main브랜치로 이동
  4. $git merge (merge할 branch 이름) 입력 후 fast-forward
  5. merge한 브랜치 삭제

Branch 충돌

branch간 충돌은 파일의 같은 위치에 다른 내용이 입력된 상황에서 발생

➡ Merge 진행 시 충돌 발생

  1. merge 시도
  2. 오류 메세지와 함께 git status 명령어로 확인 후 파일에서 해당 부분 확인
  3. 충돌이 발생한 부분 수정
  4. merge 진행
  5. $git add . 로 커밋을 위한 파일 수정사항 추가
  6. commit 진행
  7. merge한 브랜치 삭제

❗ 당장 충돌 해결이 어려울 경우 $git merge --abort 명령어로 merge 중단 ❗

➡ Rebase 진행 시 충돌 발생

  1. rebase 시도
  2. 오류 메세지와 함께 git status 명령어로 확인 후 파일에서 해당 부분 확인
  3. 충돌이 발생한 부분 수정
  4. $git add .$git rebase --continue 입력
  5. $git switch main main으로 이동
  6. merge 진행
  7. merge한 브랜치 삭제

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

Branch 정리 후 나의 생각

브랜치를 접하고 머릿속에서 그림 그리면서 생각했을 땐 그렇게 어렵게 느껴지지 않았는데 직접 실행해보니 파일간의 충돌, 어느 브랜치 위치에서 실행해야하는 지, 어떤 방식으로 브랜치를 합칠 것인지 등 생각해야할 부분이 많은 것 같다. 코드를 짤때도 마찬가지인 것 같다. 처음에 머릿속으로 구상할땐 이렇게 하면 구현이 되겠는데 하고 막상 작성을 시작하면 구체적으로 어떻게 구현해야할 것인지 막힐 때가 많은 것처럼 머리로 간단하게 틀을 그려보는 것과 직접 실행하는 것의 차이는 매우 크다는 것을 한번 더 느낀다.

profile
🤍도전하는 건 즐거워요🤍

0개의 댓글