3/5 TIL

큰모래·2023년 3월 5일
0
post-custom-banner

GIT


리베이스


기본개념

  • 말그대로 “베이스를 옮긴다”라고 생각하면 이해하기 쉽다.
  • 현재 체크아웃된 브렌치에서 다른 브렌치의 최신 커밋을 베이스로 브렌치를 이동시킨다.
  • git branch [목적지]

리베이스 실습1

  • 실습 목표
    리베이스에 대한 이해

  • 실습 과정

    • git init
    • touch 0 && git add . && git commit -m "C0"
    • git checkout -b bugFix
    • touch 1 && git add . && git commit -m "C1"
    • touch 2 && git add . && git commit -m "C2"
    • touch 3 && git add . && git commit -m "C3"
    • git checkout main
    • touch 4 && git add . && git commit -m "C4"
    • touch 5 && git add . && git commit -m "C5"
    • touch 6 && git add . && git commit -m "C6"
    • git rebase main bugFix
    • git log --oneline --graph --all
  • 결과


리베이스 실습 2 (충돌 실습)

  • 실습 목표

    • 각 브렌치에서 같은 파일명의 파일들을 만들어 리베이스 시 충돌을 발생시킬 것, 그리고 해결과정까지
  • 실습 과정

    • git init
    • touch 0 && git add . && git commit -m "C0"
    • git checkout -b bugFix
    • vim 1 및 파일 내용 작성 && git add . && git commit -m "C1"
    • vim 2 및 파일 내용 작성 && git add . && git commit -m "C2"
    • vim 3 및 파일 내용 작성 && git add . && git commit -m "C3"
    • git checkout main
    • vim 1 및 파일 내용 작성 && git add . && git commit -m "C4"
    • vim 2 및 파일 내용 작성 && git add . && git commit -m "C5"
    • vim 3 및 파일 내용 작성 && git add . && git commit -m "C6"
    • git rebase main bugFix
      • 충돌 발생
    • vim 1 및 파일 내용 수정
    • git add .
    • git rebase --continue
    • vim 2 및 파일 내용 수정
    • git add .
    • git rebase --continue
    • vim 3 및 파일 내용 수정
    • git add .
    • git rebase --continue
    • git log --oneline --graph --all
  • 결과


협업


GIT FLOW

  • 작업은 무조건 develop브렌치를 토대로 이루어진다.
  • develop 브렌치에서도 바로 작업이 이루어지지 않고 기능별로 브렌치를 만들어 완성되면 병합한다.
  • 복잡하고 개발 속도가 느릴수 있다.

GITHUB FLOW

  • 기능별로 브렌치를 만들어 완성되면 바로 병합한다.
  • GITFLOW 에 비해 간단해보이지만 뭔가 안전하지 않아 보임.
  • 뭘 믿고 이렇게 바로 배포할 수 있는 걸까??
    1. main 브렌치로 병합 시 테스트 케이스를 모두 실행시켜 하나라도 실패하면 커밋에 실패
    2. 병합 시 룰을 적용할 수 있다. (깃허브 상에서 다른 사람들에게 코드 리뷰를 받는 등의 룰)


GITHUB FLOW 실습

  1. 리포지토리 생성
    1. 생성할 때 README 만들기
  2. Setting에서 main 브렌치에 PR 룰 걸기 (혼자 연습할땐 못함)
  3. 이슈 생성 (일거리를 만드는 거라고 보면 됨)
    1. Assignees : 일을 해야할 사람 설정
    2. Labels : 어떤 일인지 설정
  4. 생성된 원격 저장소를 git clone 을 통해 로컬 저장소로 복사
  5. (main) git checkout -b enhancement/1 : 작업할 브렌치 생성
  6. 기능 추가 작업 진행
  7. 기능 추가 한 것을 원격 저장소로 바로 push 하면 안된다!
    1. 원격 저장소의 main 브렌치는 현재 다른 사람들과 협업하며 계속 커밋이 진행되는 상태일 수 있다.
    2. 따라서 원격 저장소의 main 브렌치에서 작업되고 있는 최신 작업본을 가져와야 한다.
  8. (enhancement/1) git pull origin main --rebase : 최신화 작업
  9. (enhancement/1) git push origin enhancement/1 : 원격 저장소로 브렌치 올리기
  10. 깃허브 접속 및 pr 생성
  11. pr 승인
  12. (enhancement/1) git checkout main : main 브렌치로 체크아웃
  13. (main) git pull origin main : 최신화 작업
  14. (main) git branch -D enhancement/1 : 사용한 브렌치 제거
  15. (main) git fetch --prune : unreachableobject 들을 로컬에서 제거하는 작업
  16. 이슈 승인되면 또 다른 이슈 확인 및 브렌치 생성하며 위의 과정 반복
profile
큰모래
post-custom-banner

0개의 댓글