좀 진도를 많이 뺐다.
아니 사실 그 전에 너무 조금 뺀게 아닌가 싶기도 하다.
오늘 책의 진도표를 보니까 이 책이 7일코스로 짜여져있었다.
그래서 한 챕터를 다 끝냈다.
이번주 안에 이 책을 다 끝내보도록 하자.
진도표상으로는 4일이면 끝난다.
지난 공부까지는 개인 프로젝트(또는 소규모의 팀프로젝트)를 작성하고 관리하는 내용이었다면
오늘 배운 내용은 다른 사람의 프로젝트를 기반으로 기능을 구현
하고 pull request
를 통해서 contributor가 되는 법을 배웠다.
아마도 contributor가 많이 존재하는 오픈소스에 기여할 때 많이 사용될 기능이지 않을까한다.
branch
와 비슷한 기능이지만, 브랜치와는 달리 혼자서만 사용할 수 있는 새로운 원격저장소이기 때문에 온갖 실험적인 커밋이 가능하다.
남의 저장소를 통째로 가져올 수 있는 기능이며, 원 개발자는 누가 자신의 저장소를 fork 했는지 추적이 가능하다. (누가 이 코드에 관심이 있는지, 어떤 기능들을 원하고있는지 알아볼 수 있는 좋은 척도가 될 것 같다)
원본저장소에 본인이 만든 코드를 집어넣고 싶다면 (contributor가 되고싶다면)
pull request를 통해 원 개발자에게 병합요청을 할 수 있다.
원개발자는 바로 승인을 할 수도 있고, 코멘트를 달수도 있으며, 수정요청을 할 수도 있다.
이때 사용되는 것이 rebase(재배치)
기능이다.
물론 단순히 충돌을 해결한 새 커밋을 작성해서 리퀘스트를 보낼수도있다.
(이 경우에는 커밋이 지저분해보일 수 있다.)
Rebase는 원본저장소의 최신커밋을 기준으로 내가 만든 코드를 충돌없이 병합하는 과정이다. 이러한 rebase
과정을 통해서 충돌을 해결하고, 다시 pull request
를 보낼 수 있다.
rebase
기능을 사용하기 위해서는 내 로컬저장소에 원본저장소의 커밋도 최신화 시키기 위한 원격저장소 추가
기능을 사용해야 한다. (해당 기능은 소스트리에 있다고 한다. CLI에도 있을 것 같지만 아직 배우지 않았다.)
원격저장소 추가
기능을 사용하면 내 로컬저장소에서 원본저장소의 커밋 진행내용을 함께 볼 수 있기 때문에 유용하다.
upstream
이다. (그리고 기본적인 원격저장소의 닉네임은 origin
을 사용한다.)rebase
기능은 매우 조심해서 사용해야한다.
기존 이력이 삭제될 수 있기때문에 여럿이 사용하는 브랜치에서 사용하게된다면 위험하다.
때문에 원격저장소에 푸쉬할때 강제푸쉬 기능을 사용해서 푸쉬해야한다.