포크와 브랜치의 차이

git

포크와 브랜치의 차이

과제를 제출할 때 보통 원본 레포지토리를 포크해 오고, 그 포크한 저장소에서 브랜치를 따서 작업한 뒤 마무리되면 원본 레포지토리에 PR을 보낸다. 그런데 문득 "실제 서비스용 메인 브랜치만 두고 필요할 때마다 브랜치를 따서 작업 후 합치면 안 되는 걸까?"라는 의문이 들어 포크와 브랜치의 차이를 정리해 보았다.

브랜치(Branch)

브랜치는 같은 저장소 안에서 독립적인 작업 공간을 나누는 기능이다.

  • 하나의 집 안에서 방을 나눠 작업하는 것과 비슷하다.
  • 메인 브랜치를 그대로 두고 기능 추가나 버그 수정을 할 때 브랜치를 따서 작업한 뒤 다시 합친다.
  • 팀 내부 협업에서는 브랜치만으로도 충분하다.

포크(Fork)

포크는 저장소 자체를 복제해서 새로운 저장소를 만드는 기능이다.

  • 집 전체를 복제해 독립적으로 작업하는 것과 같다.
  • 원본 저장소에 직접 쓰기 권한이 없을 때, 내 계정으로 가져와 자유롭게 수정하고 관리할 수 있다.
  • 주로 오픈소스 기여에서 사용된다.

정리

  • 브랜치: 같은 집 안에서 방을 나눠 작업
  • 포크: 집 전체를 복제해 독립적으로 작업

팀 프로젝트처럼 같은 저장소에서 협업할 때는 브랜치를 사용하면 되고, 원본 저장소에 권한이 없는 오픈소스 기여 상황에서는 포크가 필요하다.