본문 바로가기

내배캠/TIL

Git Branch 정리

Git & Github으로 협업하는 법

1. 브랜치 활용하기

보통 파일을 만든 후 수정하고 싶긴 한데 원본은 그대로 두고 싶을 때 최최종 복사본을 만들곤 한다. 하지만 회사에서 몇 기가 씩 하는 프로젝트도 복사본을 만들 수는 없다. 이럴 때 사용하는 것이 브랜치다.

  • 브랜치 생성 명령어 : git branch 브랜치 이름
  • 브랜치 확인 명령어 : git branch
    • 앞에 * 있고 색깔 있는게 현재 위치
    • 끝에 (END) 있는건 q 누르면 빠져나옴
  • 브랜치 이동 명령어
    • git switch 브랜치이름
    • git checkout 브랜치이름
  • 브랜치 한 번에 생성 & 이동
    • git switch -c 브랜치이름
      • create의 약자
    • git checkout -b 브랜치이름
      • branch의 약자

만약 새로운 브랜치에서 코드를 수정한 후 add, commit하고 main으로 이동하면 내가 저장한 수정본이 남아 있을까? ⇒ NO! 최최종에서 변경한다고 최종이 바뀌지 않음. 코드 짠 브랜치를 main에 합쳐야 함. 왜? 협업하니까. main을 최종 브랜치처럼 사용하는 것.

  • 브랜치 합치는 명령어
    • git switch 최종브랜치이름
    • git merge 합칠브랜치이름
      • 최종브랜치로 이동 먼저 하고 merge 하는 것.

2. Pull Request 활용하기

사실 git merge 잘 안씀. 터미널이 아니라 깃허브에서 합치게 되는데, 합치기 전에 어떻게 짰는지 보고 싶거나, 이렇게 합쳐도 되는지 안되는지, 수정해야 하는건 없는지 깃허브에서 보고 판단할 수 있기 때문. 온라인으로 올려 놓으면 코드 리뷰 온라인으로 쉽게 할 수 있으므로. 이거 말고도 보안이나 테스트 자동화의 이유 등이 있음.

Github에서 merge 하기

  • Pull Request
    • Pull : 당겨서 합치는 것 (merge)
    • Request : 요청하다.
    • main으로 당겨와서 합쳐도 괜찮을까요?
  1. 내 브랜치에서 수정
  2. add, commit으로 수정된 코드 저장
  3. github에 업로드하기 : git push origin 브랜치명
  4. github으로 이동
  5. Compare & pull request 클릭
  6. 최종 브랜치 (base) ← 기능 브랜치 (compare) 확인
  7. Pull request 메시지 작성
  8. Create pull request 클릭
  9. Merge pull request 클릭
  10. Confirm merge 클릭
  11. 로컬 main 브랜치로 이동 : git checkout 브랜치명(main)
  12. github 코드 반영 : git pull origin 브랜치명(main)

정리

  1. 브랜치 생성 및 이동
  2. 기능 개발 및 코드 저장
  3. 코드 업로드 및 Pull request 생성
  4. github에서 merge
  5. 내 로컬에도 반영

3. 협업 실전 가이드

근데! 메인 브랜치가 배포용이라는 게 굉장히 큰 문제점. 합치고 나면 사용할 수 있게 바로 배포를 해야 함. 근데 내가 만든 걸 테스트도 안하고 바로바로 쓴다? 안됨.

문제점1) 완벽하게 기능 개발해야 merge 가능

  1. 배포용에 로그인, 로그아웃 기능 없이 회원가입만 합쳐버리면 회원가입만 가능한 서비스가 되어버림.
  2. 일단 다 만들고 합쳐버린 후 문제가 발생하면 이 문제가 어디서 생긴건지 찾기도 어렵고 버그 수정도 오래 걸림.
  3. 작은 단위로 개발하면 버그 수정 좀 더 쉬울 수 있음.

해결책1) 개발용 브랜치

  1. Main 브랜치 : 배포용, develop 브랜치 : 테스트 용, 기능 브랜치 : 기능 개발용
  2. 합치는 건 develop으로
    1. 기능 브랜치를 develop 브랜치로 합치고, 이걸 배포할 때 develop을 main에 합침.

문제점2) 그냥 합치면 위험함

  1. 각각은 에러가 나지 않아도 합쳤을 때 에러 날 수 있음. 그냥 충돌 안 난다고 합쳐 버리면 안됨.
  2. 예로 변수 이름을 똑같이 선언하는 등등…

해결책2) 로컬에서 먼저 테스트

  1. 합치기 전에 git pull 해서 내 컴퓨터(로컬)로 가져와 테스트
  2. git pull origin dev
  3. 이 뿐 아니라 충돌 났을 때도 이렇게 해결 가능함.

실전 가이드

  1. 초기 세팅
    1. 팀장 : 초기 코드 작성 및 Github 업로드
      1. 폴더 생성
      2. 초기 코드 작성
      3. git init, add, commit
      4. Github 레포지토리 생성
      5. Github 업로드 (git push)
    2. 팀장 : dev(혹은 develop) 브랜치 생성
      1. git switch -c dev (로컬에서 dev 브랜치 생성)
      2. git push origin dev (github에도 반영)
    3. Github에서 dev 브랜치를 default로 설정
      1. Settings
      2. Default branch의 화살표 클릭
      3. 브랜치 선택후 Update 클릭
    4. 팀원들을 collaborator로 등록
    5. 팀원 : git clone 하기
  2. 기능 개발 시작
    1. 기능 브랜치 생성 및 기능 개발
      1. git switch -c 기능브랜치명
      2. 코드 작성
      3. 코드 저장 및 업로드 (add, commit, git push origin 기능브랜치명)
    2. Pull request 생성
    3. 코드 작성자 : 리뷰 요청하기
    4. 코드 리뷰어 : 리뷰하기
      1. 메시지 작성 후 Start a review 클릭
      2. Finish your review 클릭
      3. 메시지 작성 후 코멘트 혹은 승인 혹은 변경 요청 중 하나 선택
      4. Submit review 클릭
    5. 합치기 전 내 로컬에서 충돌 해결 및 테스트
      1. 기능브랜치에서 git pull origin dev
    6. merge
      1. 수정 사항이 있는 경우 git add, commit, push
      2. Github에서 merge 버튼 클릭
  3. 추가 기능 개발
    1. 내 로컬의 dev에도 변경 사항 반영
      1. dev 브랜치로 이동
      2. git pull origin dev
    2. 다음 기능 개발
      1. 기능 브랜치 생성 및 코드 작성
      2. add, commit, push
      3. pull request 생성 및 코드 리뷰
      4. 내 로컬에서 충돌 해결 및 테스트
      5. 코드 업로드 및 merge

'내배캠 > TIL' 카테고리의 다른 글

24. 08. 02  (0) 2024.08.02
24. 08. 01  (0) 2024.08.01
24. 07. 31  (0) 2024.07.31
24. 07. 30  (0) 2024.07.30
24. 07. 29  (0) 2024.07.29