기어가더라도 제대로

(4) Git&GitHub [ch.3] 여러 명이 함께 Git으로 협업하기 본문

기타

(4) Git&GitHub [ch.3] 여러 명이 함께 Git으로 협업하기

Damagucci-juice 2021. 11. 23. 20:49

1. 원격저장소에서 협업하기: 브랜치(Branch)


여러 사람이 협업하기 위해선 서로 다른 가지 위에 버전을 저장해야 같은 코드를 수정하고 저장했을 때 대처가 가능하다. 이렇게 유용한 브랜치에 대해서 알아보자.

Git이 커밋을 관리하는 방식: 줄줄이 기차

  • 브랜치(Branch): 특정 기준에서 줄기를 나누어 작업. 새로운 가지로 커밋을 만드려면 반드시 먼저 브랜치를 먼저 만들어야 한다. 브랜치를 새로 만들면 기존 브랜치의 마지막 커밋을 가리킨다. 즉, 브랜치를 추가하는 것은 새로운 포인터를 추가하는 것이다.
  • [master] 브랜치 : Git이 제공하는 기본적인 브랜치
  • [Origin/master] 브랜치 : 원격 저장소(Origin)의 master 브랜치
  • [HEAD] : 브랜치 사이를 넘나들 수 있게 해주는 포인터

새 브랜치 만들기


여러 사람이 협업하는 원격저장소에 경우에 미리 브랜치 생성 규칙을 만들어 놓는게 좋다.

예시
1.[master] 브랜치에는 직접 커밋을 올리지 않는다.
2.기능 개발을 하기 전에 [master] 브랜치를 기준으로 새로운 브랜치를 만든다.
3.이 브랜치 이름은 [feature/기능이름] 형식으로 하고 한 명만 커밋을 올린다.
4.[feature/기능이름] 브랜치에서 기능 개발이 끝나면 [master] 브랜치에 이를 합친다.

브랜치 이동하기(checkout)

git checkout master : 마스터 브랜치로 체크아웃하는 명령어
체크아웃은 다른 브랜치로 이동하라는 명령어 입니다. 소스트리에서는 다른 브랜치를 더블클릭하는 것만으로도 브랜치 이동이 가능합니다.

2. 브랜치와 브랜치를 합치기: 병합(merge, 머지)

개발한 기능을 테스트 후에 오류가 없다면 마스터 브랜치에 병합을 해야 기준이 되는 브랜치에서도 코드가 구현이 됩니다.

병합의 종류(3)

  1. 빨리 감기 병합(fast-forward) : 새로 추가되거나 충돌나는 것 없이 그냥 앞으로 휘리릭 이동하기만 하면 되어서 '빨리 감기'라고 부릅니다. 소스트리에서 봤을 때 두개의 브랜치가 한줄기 위에 있다면 빨리 감기 병합을 실행합니다.
  2. 병합 커밋(merge commit) : 가지가 나뉘면 하나의 줄기로 합치는 과정이 필요하고, 이 과정 자체를 커밋으로 남기는데 이를 병합 커밋이라 합니다. 기준 가지가 두개인데 어느 곳을 기준으로 커밋을 남기면 좋을까요? 상황 마다 다르지만, 기능을 메인 코드에 추가한다는 상황이면 [feature/기능] 브랜치를 [master] 브랜치에 병합 합니다.(베이스 브랜치 : [master])
  3. 충돌(conflict) : 두개의 가지에서 같은 파일을 수정했다면 충돌이 납니다. 이 충돌이 난 파일을 소스트리에서 '커밋하지 않은 변경사항'에서 확인합니다. 충돌난 파일은 스테이지 아래에 있습니다. 해당 파일을 고치면 병합이 가능합니다. 오류를 고쳤다면 병합을 재개해줍니다.
Comments