하나의 중앙 서버 존재하여 여러 클라이언트들이 각자 맡은 파트만
가져와서 작업하고 다시 중앙에 통합 시키는 방식입니다.
대표적으로 CVS, SVN이 있어요.
서버 전체 사본
을 가지고 작업합니다.git
이 있어요.Git Fork
Original repository를 그대로 내 레포지터리로 가져오는 거예요.
서로 연결되어 있어서 원본이 수정되면 fetch나 rebase을 통해 내 레포지터리에 반영됩니다.
내가 만든 변경 사항을 원본에 적용하려면 pull request를 하면 되는데 이건 관리자가 승인을 해줬을 경우 반영이 됩니다.
💡 즉, Github 내에서의 복사라고 생각하시면 됩니다.
Git Clone
clone은 특정 repository를 내 local machine에 복사하여 새로운 저장소를 만드는 것입니다.
clone한 원본 repository를 remote 저장소 origin으로 가지고 있습니다. 권한이 없는 경우 해당 저장소로 push 하지 못합니다.
제가 직접 손으로 그려서 정리해봤어요
여러 사람이 동일한 소스 코드를 기반으로 서로 다른 작업을 할 때에는 각각 서로 다른 버전의 코드가 만들어 질 수 밖에 없습니다.
이럴 때, 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 바로 '브랜치(Branch)' 입니다. 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경할 수 있지요.
이렇게 분리된 작업 영역에서 변경된 내용은 나중에 원래의 버전과 비교해서 하나의 새로운 버전으로 만들어 낼 수 있습니다.
master
: 제품으로 출시(배포)할 수 있는 브랜치
develop
: 다음 버전을 개발하는 브랜치
feature
: 단위별로 기능을 개발하는 브랜치
(완료되면 develop
브런치와 병합)
release
: 배포 전 (master와 병합 전) QA를 통해 버그를 찾아내기 위한 브랜치
hotfixes
: master
브랜치에서 발생한 버그를 긴급하게 수정하는 브랜치
❗ master
와 develop
은 항상 유지되는 메인 브랜치들이며 그 외에 feature
, release
, hotfixes
는 필요한 기간에만 유지되는 보조 브랜치들입니다.
프젝 단위가 작다보니 master 브랜치에서 작업하기도 하고 그랬었는데 알고보니 굉장히 중요한 브랜치네요... 앞으로는 작은 개발을 하더라도 브랜치의 기능을 알고 분리하는 습관을 들여야겠네요!