개발공부노트/GIT

[GIT] CH4. 둘 이상의 원격저장소로 협업하기

o_60__o 2022. 12. 25. 15:02
728x90
본 포스팅은 [팀 개발을 위한 Git, GitHub 시작하기]의 내용을 참고하여 작성하였습니다. 

 

오픈소스 프로젝트에 컨트리뷰트하기 위해 꼭 알아야하는 개념이 나옵니다.

언젠가는 저도 오픈소스 컨트리뷰터가 될 수 있을까요?

 

 

CH4. 둘 이상의 원격저장소로 협업하기

 

CH4 목차
1-1. 원본저장소를 복사해서 원격저장소를 만든다(fork)
1-2. 원격저장소를 소스트리를 통해 로컬저장소로 가져온다(clone)
2-1. 원격저장소에서 원본저장소로 풀 리퀘스트를 보낸다(pull request)
2-2. 풀 리퀘스트를 승인하고, 병합한다(merge)
3. 묵은 커밋을 새 커밋으로 이력을 조작한다(rebase)

 

 

1-1. 원본저장소를 복사해서 원격저장소를 만든다(fork) & 1-2. 원격저장소를 소스트리를 통해 로컬저장소로 가져온다(clone)

 

 fork란 남의 원본저장소를 내 계정의 원격저장소로 복사해오는 명령어입니다.

 

 기본적으로 원본저장소에 커밋을 직접 푸시할 수 있는 사람은 원본저장소를 만든 본인(소유자)뿐입니다. 다른 사람이 이곳에 푸시하려면 원본저장소의 소유자가 이 사람을 협력자로 등록해야 합니다. 등록되지 않은 사람이 이곳에 푸시를 하면 에러가 납니다.

 원본 저장소의 소유자가 다른 사람을 협력자로 등록하려면 Setting - Collaborators에서 따로 등록을 해줘야합니다.

 그런데 원본저장소에 직접 푸시할 수 있는 협력자들이 늘어나면 늘어날 수록 소유자는 관리하기가 어려워집니다.

 

 이럴 때 대안이 될 수 있는 것이 바로 pull request입니다. 개발자가 원본저장소를 자신의 계정에 fork해서 원격저장소를 생성하고 코드를 커밋한 후 pull request하면 다른 개발자들이 원본저장소에 직접 푸시를 하는 권한은 없지만 소유자가 이 pull request를 확인하고 병합하면서 기여를 할 수 있게 됩니다.

 

교재에서 적절한 비유가 나오는데요 branch가 원본저장소 내에서 평행세계를 만드는 것이라면 fork는 평행우주를 만드는 것입니다.

 


2-1. 원격저장소에서 원본저장소로 풀 리퀘스트를 보낸다(pull request) & 2-2. 풀 리퀘스트를 승인하고, 병합한다(merge)

 

 교재의 1절, 2절은 깃허브 아이디를 하나 더 만들어서 fork, pull request, merge까지 실습을 합니다. 이제야 좀 협업하는 느낌이 드네요 확실히 깃허브를 제대로 사용하고 있는 기분이 듭니다.

 


3. 묵은 커밋을 새 커밋으로 이력을 조작한다(rebase)

 

 충돌이 일어났을 때 병합 커밋까지 풀 리퀘스트 하지 않고 rebase를 통해 깔끔한 풀 리퀘스트를 보내는 방법을 실습합니다. 충돌이 일어나면 깃이 복잡해지네요.

 하나의 로컬 저장소에서 두 개 이상의 원격저장소를 바라보는 방법으로 upstream의 커밋 상태를 확인하고 rebase를 해서 이력을 조작하여 pull request를 보내는 방법입니다.

 

 


 

 

rebase는 확실히 많이 쓸 것 같습니다. 얼른 깃 써서 협업해보고 싶네요

728x90