기타

git 협업하는법

leejiwoo21 2024. 1. 10. 21:17

git은 

 

프로젝트 시작 시

git repository 생성자는 orgin/develop에 프로그램 소스를 넣어둔다.

 

merge 브랜치: develop

신규 기능 또는 씬 작업 브랜치: feature/[기능명 | 씬 이름]

 

참여자는 origin에 자신의 작업용 branch를 만든다. ex) origin/feature/jiwoo

  • 여기서 feature는 폴더, jiwoo는 브랜치이름이다.

그 branch에서 new branch를 따서 local에도 “feature/branch”의 브랜치를 만들고 해당 branch에서 작업을 한다.

origin/develop에서 branch를 따서 local에 develop브랜치를 만든다.

> local에 develop을 만드는 이유는 local에서 merge 후 테스트하여 원격저장소에 오류가 섞이는 것을 예방하기 위함.

 

[정상적으로 셋팅된 모습]

 

whale train은 작업용 개인 브랜치이다

 

작업 중

작업 중 발생한 변경 사항을 local의 “feature/branch”에 수시로 Commit을 남기고, 퇴근 전 원격branch에 올린다.

 

  • commit, push, checkout, pull, merge, rebase

 

commit: 작업 중 변경사항을 local에 기록한다.

push: local의 commit(변경사항)을 origin(원격 저장소)에 올린다.

checkout: branch나 commit을 checkout 한다고 표현하고, checkout한 branch나 commit을  local에 반영(사용)한다.

pull: 다른 개발자가 origin에 올린 commit을 local저장소로 당겨온다.(최신버전 업데이트)

rebase: 각 브랜치는 base(시작점, 기준commit)이 존재한다. rebase는 base를 갱신하는 작업이다. 갱신 절차는 아래와 같다. 

  • 현재 branch와 목표 branch가 존재할 때, 현재 branch의 base를 찾는다.
  • 현재 branch와 목표 branch에서 base 이후로 추가된 commit을 순차적으로 비교하여 conflict을 해결한다.
  • 가장 최신 commit까지 비교하여 만든 상태를 새로운 commit으로 만든다.
  • 이 commit을 현재 branch의 새 base로 삼는다.
  • rebase를 할 경우 기존 commit이 변형되어 되돌리기 힘들기 때문에 주의해야 한다.

merge: 두 branch의 최신 commit을 비교하여 conflict이 있다면 해결하고 새로운 commit을 만든다. 이 때 만들어진 commit을 두 branch가 공유하여 최신 commit으로 삼는다.

 

  • A에서 B에 merge/rebase한다 = A에 checkout하고 B에 merge/rebase

 

 

원격Branch에 올리는 순서

  1. 개인 feature/branch에서 변경사항을 commit한다.
  2. local / develop 브랜치를 pull 하여 동료가 origin(원격 저장소)에 push한 commit들을 가져온다.
    > local develop 업데이트
  3.  내  feature/branch에서 develop에 rebase하고 실행하여 문제가 없는지 확인한다.
    > 동료의 작업물과 내 작업물을 합쳐서 최신 commit을 만든다.
    > 문제가 생기면 전 commit으로 되돌린다.*
  4. 문제가 없다면 local develop에서 feature/branch에 merge한다.
  5. 최신 commit을 작업용 feature/branch로 가져옴
  6. local의 develop을 push한다.
    > origin/develop에도 최신 commit을 올린다.

 

 

원격branch에서 가져오는 방법

  1. Fetch origin
    > 동료들의 변경사항을 확인한다.
  2. local develop에서 pull
    > 동료들이 올린 commit을 local로 가져온다.
  3. feature/branch에서 local develop에 merge
    > 작업용 branch 변경사항 적용

 

Git Convention: 

chore: [그다지 신경써서 보지 않아도 될 커밋]

add: [Init 이후 기능, 시스템의 추가 및 변경 내용]

refac: [네임스페이스 변경, 메소드 이름 변경, 클래스 추가 등 리팩토링한 내용]

fix: [버그 수정 내용]

doc: [swagger, puml, 주석 등]