프로젝트 초반 branch의 개념을 이해하지 못해서 팀원들과 난항을 겪었다. 이후에 한가지 루틴으로 push, merge를 했는데, 잦은 오류로 제대로된 공부를 해야겠다고 생각했다.
Branch
branch는 main에서 뻗어가는 가지다. 백업을 해둔 상태로 작업을 진행한다고 생각하면 되는데, main은 최종본이고 branch는 최종본을 복사해둔 스페어느낌이다. 여기까지는 이해가 잘 되는데, 막상 프로젝트를 하다보면 local main도 있고 remote main도 있다... 처음에 remote가 '가상'의 의미를 가지고 있어서 최종이 local이라고 생각하고 branch를 열심히 만들다가 git을 다 꼬아버리고 PM 눈치를 봤다.. ^.^ 죄송합니다 꾸벅
Remote, Local Branches
인텔리제이를 보면, 우측 하단에 main을 클릭하면 remote와 local을 볼 수 있다.
local branches는 내 컴퓨터의 main이다.
remote branches는 원격의 main인데, gitlab이나 github에 존재하는 main이라고 생각하면 된다.
1. main에서 remote branch의 main을 pull 받아온다. (최신 코드 업데이트 개념)
2. 최신 상태의 main에서 branch를 만든다.
3. branch에서 작업 후 pull & push를 하고 git에서 merge request를 한다.
위 3번에서 한 사이클이 끝난다. 이제 merge가 승인이 되어 원격 main을 pull 받아와서(2번) 새로운 branch를 분기하거나 기존 branch의 기능을 fix해도 된다. merge는 local에서 push한 코드를 remote main과 합치는 작업이다.
과정을 캡쳐해서 남겨보면
1. remote main에서 local main으로 pull 받아오기(local main을 최신 상태로 만드는 작업)
2. local branche의 main에서 branch를 분기(백업본 만드는 작업)
3. branch에서 작업 후 pull & push 진행
4. git의 repository에서 merge request 작성 (branch에서 작업한 작업물을 remote main에 합치는 작업)
5. merge가 완료되면 main으로 이동(check out) 후 1번 과정을 반복
GIT LOG
git log도 확인할 수 있다. 인텔리제이 왼쪽 하단에 git을 클릭하면 아래처럼 우당탕탕 선들이 보이는데, branch를 만들고 merge하는 과정들을 볼 수 있다.
제일 왼쪽에 있는 보라색 선이 main이다. 그 옆으로 선이 뻗어져 나가는게 branch를 만든 것. branch에서 다시 제일 왼쪽 보라색 선으로 들어가는 것이 merge가 된 것!
보통 branch는 1개의 기능당 1개의 branch를 만든다. 만약 회원가입 기능을 구현한다면 branch를 만들고 회원가입이 구현되면 merge 후 해당 branch는 삭제한다. 하지만 나처럼 기능에 익숙하지 않다면 브랜치를 남겨두어 언제든 check out을 통해 해당 branch로 이동하여 코드를 확인하거나 수정이 가능하다. 사실 깃에서 충돌이 발생할 수 있어서 이런 경우는 없는게 좋긴하다!
'Project > Team Project' 카테고리의 다른 글
[Git] 팀프로젝트 깃 충돌 해결하기 (0) | 2023.02.14 |
---|---|
AWS S3에 이미지, 파일 업로드 로직 구현하기 (0) | 2023.02.07 |
[Gitlab] Git 사용 방법 정리 (commit, push, branch, pull) (0) | 2023.01.19 |