본문 바로가기
Tool

[Git]03 - upstream / PR / fork / rebase / merge 전략

by SOLYI 2022. 11. 1.

챕터 안내

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

  • 원본저장소를 복사해서 너구리의 원격저장소를 만든다(fork)
  • 원본저장소에 풀 리퀘스트 보내기
  • 묵은 커밋을 새 커밋으로 이력 조작하기(rebase)

개념 정리

upstream 원본저장소를 지칭하는 관용적 닉네임

평행세계를 만드는 브랜치, 평행우주를 만드는 포크

  • 기본적으로 원격저장소에 커밋을 직접 푸시할 수 있는 사람은 소유자뿐이다. 다른 사람이 푸시 하려면 협력자로 등록해야한다.
  • 원격저장소의 소유자는 많은 개발자들에게 의견을 받고 오픈소스를 개선하고싶은 니즈가 있다. 개발자는 오픈소스에 참여하고 기여하고 싶어한다. 하지만 원본저장소에 직접 푸시하는것에 대한 부담이 있다.
  • 이럴때 대안이 될 수 있는 방법이 풀 리퀘스트 Pull Request 이다. 원본저장소를 자신의 계정에 복사fork해서 원격저장소를 생성하고, 이곳에 커밋을 올린 후 원격저장소의 소유자에게 병합 요청하면 원격저장소의 소유자는 개발자 병합 요청을 검토해서 원격저장소에 반영한다.
  • 브랜치는 원격저장소 내에서 평행세계를 만드는것이라면 포크는 평행 우주를 만드는것과 같다.

묵은 커밋을 새 커밋으로 이력 조작하기 rebase

  • ㅁ포크한 원격저장소에서 원본저장소로 풀리퀘스트 보내기
  • 오류메세지 Can’t automatically merge 코드가 충돌이 났어요!

여러 원격저장소 히스토리를 한눈에 보기 : 리모트 추가 (Add remote)

  • 소스트리가 원본저장소와 원격저장소를 동시에 추적하도록 만들기
  • 원격저장소 추가 - 원격이름(upstream)과 원본저장소주소 입력 후 추가.

머지 전략 3가지 (팀원님 발표)

  1. create merge commit : 일반적으로 알고 있는 머지 방법. 그래프로 확인하기가 쉽다. 단점으로는 단순 커밋이력들이 많은경우 보기가 오히려 불편해짐
  2. squash and merge : 커밋덩어리들을 한개로 뭉쳐서 머지하는것. 그래프를 보기는 좋다. 단점으로는 브랜치를 삭제하면 상세한 로그는 남지 않아서 일반 머지보다 정보를 정확히 알기 어렵다.
  3. rebase and merge : 브랜치에 여러개의 커밋을 머지해도 마스터 그래프에서 여러개를 커밋한것처럼 볼 수 있다. 단점으로는 브랜치를 삭제해버리면 어느 브랜치에서 머지가 되었는지 확인할 수 없다.
반응형