[Git] 원본저장소를 복사해서 원격저장소를 생성 (fork)

2022. 4. 20. 11:23Git

1. 평행세계를 만드는 브랜치(branch), 평행우주를 만드는 포크(fork)

  • 기본적으로 원본저장소에 커밋을 직접 푸시할 수 있는 사람은 본인(소유자)뿐입니다
  • 다른 사람이 원본저장소에 커밋을 푸시하려면 협력자(Collaborator)로 등록해야함
  • Settings - Collaborators - Add collaborator

포크(fork)의 필요성

  • 원본 저장소에서 협력자(Collabrator)가 늘어날수록 원본저장소를 관리하기 어려워짐
  • 관리가 어려워지는 이유는 협력자가 원본 저장소에 직접 푸시할 수 있기 때문
  • 늘어나는 협력자로 인한 관리의 부담과 오픈소스의 개선의 딜레마 발생

포크(fork)

  • 개발자는 원본저장소를 자신의 계정에 복사(fork)해서 원격저장소를 생성
  • 복사한 원격저장소에 커밋을 올린 후 원본저장소의 소유자에게 병향 요청을 하면 검토후 반영
  • 원격 저장소 내의 브랜치간의 풀 리퀘스트 과정과 동일함

브랜치와 포크의 차이

  • 브랜치는 한 원격 저장소내의 다른 커밋을 가리키는 포인터
  • 포크는 원격 저장소의 브랜치와 커밋 이력들을 전부 복사해서 독립적인 원격저장소를 생성하는 것
  의의 편리한점 불편한점
브랜치 하나의 원본저장소에서 분기를 나눔 하나의 원본저장소에서 코드 커밋 이력을 편하게 볼 수 있음 다수의 사용자가 다수의 브랜치를 생성하면 관리하기 힘들어짐
포크 여러 원격저장소를 만들어 분기를 나눔 원본저장소에 영향을 미치지 않으므로 원격저장소에서 마음껏 코드를 수정할 수 있음 원본저장소의 이력을 보려면 따로 주소를 추가해야함

 

2. 남의 저장소를 내 계정에 통째로 복사하기(Fork)

2.1 GitHub의 다른 계정을 생성

2.2 Fork하고자 하는 원본저장소(저의 경우 git_study repository) 방문

2.3 [Fork] 버튼 클릭하여 원본저장소를 복사

2.4 소스트리를 실행하여 yonghwankim2의 원격저장소를 받아옴

New Tab -> Clone -> 저장소 URL 입력 -> 저장위치 경로 입력 -> 클론 버튼 클릭

현재 단계까지의 수행은 원본저장소의 GitHub 계정으로 소스트리에서 받아온 것이기 때문에 Fork한 원격저장소에 푸시를 하면 에러가 발생합니다. 따라서 소스트리에서 yonghwankim2 계정을 추가해야합니다.

 

2.5 소스트리 도구->옵션->인증->추가-> Host, Credentials 정보 입력-> 비밀번호 새로고침 클릭

호스팅 서비스 : GitHub

선호 프로토콜 : HTTPS

인증 : OAuth, OAuth는 웹 브라우저를 띄워서 로그인하는 방식, Basic은 GitHub 닉네임과 암호를 입력해서 로그인하는 방식

추후 소스트리에서 yonghwankim-dev2@github.com 계정을 사용하고 싶다면 설정 초기화를 클릭하고 소스트리에 재접속합니다.

 

2.6 iTshirt-raccoon/like.md 생성 및 작성

2.7 소스트리의 부계정인지 확인후 커밋 및 푸시

2.8 부계정의 원격저장소에 커밋 이력 확인

 

 

References

source code : https://github.com/yonghwankim-dev/git_study
                  https://github.com/yonghwankim-dev2/git_study
팀 개발을 위한 Git Github 시작하기, 정호영 진유림 저