당신은 500명이 개발하는 프로젝트의 일원이 되었습니다.
프로젝트의 원본 레포지토리를 직접 수정할 수는 없습니다.
같은 파일을 누군가가 수정하면 상대방의 자료를 날리게 되고, 누가 어떤 것을 수정했는지 파악할 수 없습니다. 이는 이미 많은 개발자들이 겪어보았고, 버전관리의 개념이 등장합니다. 즉 깃의 등장이었던 것이죠.
때문에 복사본을 내 레포지토리에 가져와야 합니다.
그냥 복사하여 가져오는 것이 아니라, 원본 레포의 자식으로서 복사본을 가져오는 과정, 이를 포크라고 합니다.
네. 그 포크입니다. 재밌죠? 포크로 찍는다는 의미가 그대로 사용되었습니다.
그냥 복사하여 가져오는 것이 아닌, 포크(Fork) 하여 가져오게 되면 메인 레포와 연결되는 것이죠.
포크는 깃허브 레포지토리의 우측 상단에 존재합니다. 이를 클릭하면 내 레포에 추가할 수 있게 됩니다.
한번 추가해보죠. 이름을 정한 뒤 생성 버튼을 클릭하면 됩니다.
생성된 레포를 보면 forked from {원본 레포 주소} 라는 메세지가 보입니다.
자 이제 이를 로컬환경에서 clone 적용해봅시다.
git clone https://github.com/{Fork한레포지토리주소}.git
우측의 초록 버튼을 클릭하여 URL 을 복사합니다. 그리고 위의 명령어를 입력합니다.
git remote add {별명} https://github.com/{원본레포지토리주소}.git
원본 프로젝트 저장소를 원격 저장소로 추가합니다.
git remote add upstream https://github.com/{원본레포지토리주소}.git
이름을 따로 지정할 수 있지만 위와 같이 upstream 이라는 이름으로 통일하여 활용하면 기억하기도 유리하게 됩니다.
git remote -v
그리고 제가 추가한 경로를 모두 체크할 수 있게 됩니다. 앞으로 이 이름들을 후술하는 방법을 통해 활용할 수 있게 됩니다.
브랜치는 이미 우리가 사용하고 있습니다. main 혹은 master 가 브랜치입니다.
이를 메인 브랜치라고 합니다. 보통은 배포를 하는 기본 브랜치로 사용하기에 아주 중요합니다.
그렇다면 추가기능을 만들때는 어떻게 할까요?
이 때 사용하는 개념이 새 브런치(Feature Branch) 입니다. 메인브런치와 분기하여 관리하며 이 브랜치에서 새 기능과 관련된 모든 개발을 진행합니다. 개발이 완료되었다면 메인 브런치와 합병할 수 있죠.
즉 새 브랜치를 사용하면 기본 코드 베이스를 변경하지 않고도 새로운 기능을 추가하거나 버그를 수정할 수 있게 됩니다.
git checkout {브랜치명}
chekout 을 통해 브랜치를 변경할 수 있습니다. 아직 push 하지 않는 작업 내용은 모두 날라갑니다.
git branch
브랜치가 어떤게 있는지 확인할 수 있습니다.
git add
git commit -m "메세지"
git push origin {생성된브런치명}
자 이제 push 에 대해 뜯어봅시다.
origin 은 upstream(윗 내용 참조) 이 될 수 있습니다. 그리고 브랜치 명을 입력하여 처리할 수 있습니다.
git push origin main
이렇게 써먹을 수 있는것이죠.
/* git pull {별명} {브랜치명} */
git pull origin main
내 로컬 환경에 별명으로 설정한 값을 가져옵니다.
git pull upstream main
응용 해볼까요? 이름을 upstream 으로 지정하면 편하게 가져올 수 있게 됩니다.
git push origin main
자 이제 수정된 자료를 로컬에만 가지고 있으니 제 레포지토리에 올려야 합니다.
위의 명령어를 입력하여 마무리 짓습니다.
git branch -d {생성된브랜치명}
더이상 사용하지 않는 브랜치는 삭제하는 것이 좋습니다.