git fork 명령어 정리


  • git의 fork에 대해서 공부하고 정리한 글입니다

포크(Fork)

  • 남의 원본 저장소를 내 계정의 원격 저장소로 복사해오는 명령어

  • 원본저장소 : 새로 만든 원격 저장소와 구분하기 위한 원래의 원격 저장소

  • 기본적으로 원본 저장소에 커밋을 직접 푸시할 수 있는 사람은 원본저장소를 만든 본인(소유자)뿐이다

  • 다른 사람이 푸시하기 위해서는 원본 저장소의 소유자가 이 사람을 협력자(Collaborators)로 등록해야 한다

  • 하지만 원본저장소의 소유자 입장에서는 협력자가 늘어날수록 원본 저장소를 관리하기 어려워진다

  • 협력자가 원본저장소에 직접 푸시할 수 있기 때문이다

  • 따라서 풀 리퀘스트(Pull request)를 사용해서 이 문제를 해결한다

  • 개발자는 원본저장소를 자신의 계정에 복사(fork)해서 원격 저장소를 생성하고, 이 곳에 커밋을 올린 후 원본저장소의 소유자에게 요청을 하면 원본저장소의 소유자는 개발자의 병합 요청을 검토해서 원본저장소에 반영한다

  • 브랜치를 통해 코드 분기점을 만들고 풀 리퀘스트를 통해 서로 확인하고 병합하는 과정과 유사하다.

  • 다만 포크한 원격 저장소의 브랜치에서 원본저장소의 브랜치로 풀 리퀘스트를 보내는 것이다


Fork vs Branch

  • 포크는 브랜치를 포함한 원격저장소의 모든 커밋 이력을 새로운 원격저장소로 통째로 복사한다

  • 브랜치에 올린 커밋 이력은 원본 저장소에 바로 볼 수 있는 것에 비해, 복제한 원격 저장소는 새로운 주소로 독립되었기 때문에 이곳의 이력을 보려면 추가적으로 이곳의 원격저장소 주소를 등록해야 한다.

  • 브랜치(Branch)

    • 하나의 원본 저장소에서 분기를 나눈다

    • 하나의 원본 저장소에서 코드 커밋을 편하게 볼 수 있다

    • 다수의 사용자가 다수의 브랜치를 만들면 곤리하기 힘들다

  • 포크(Fork)

    • 여러 원격 저장소를 만들어 분기를 나누다

    • 원본 저장소에 영향을 미치지 않으므로 원격저장소에서 마음껏 코드를 수정할 수 있다

    • 원본저장소의 이력을 보려면 따로 주소를 추가해야 한다

  • 포크한 원격저장소에서 원본 저장소로 풀 리퀘스트(github의 New pull request)를 보내서 코드를 합칠 수 있다


Reference









© 2020. by dkmqflx

Powered by dkmqflx