GitHub fork 과정이 어떻게 되나요?

Wang yurin·2022년 9월 4일
0
post-thumbnail

상대방에게 무언가를 알려줄 때 어떻게하면 내가 전달하고 싶은 것을 나만의 언어로 쉽고 재미있게 잘 전달할 수 있을까?를 고민합니다.
설명이 미흡하지만 궁금하신 점이나 보완해야 하는 부분이 있다면 댓글 부탁드립니다.
피드백은 언제나 환영입니다! 😉

fork

길동이는 유린이가 작업하고 있는 프로젝트에 참여하게 되었다.
그동안 유린이가 작업한 프로젝트의 소스코드를 길동이가 어떻게 가져오고 길동이의 코드를 유린이의 프로젝트에 사용할 수 있을까?


유린이의 레파지토리 이름을 WANG으로 가정했다.

  1. 길동이는 유린이의 WANG 레파지토리를 fork한다.

  2. fork를 하게 되면 유린이의 원격 저장소가 길동이의 원격 저장소에 올라가게 된다.
    (길동이 GitHub에 유린의 WANG 레파지토리와 동일한 레파지토리가 추가 된다. 여기서 이름 변경도 가능하다.)

  3. 현재 길동이의 Github에 WANG 레파지토리가 있지만 길동이의 로컬 저장소에는 파일이 없기 때문에 길동이의 로컬 저장소에 추가하기 위해 clone을 해야한다.

  4. clone 받을 경로를 설정하여 cd 명령어를 통해 현재 작업 디렉토리를 설정하고 아래 명령어를 작성한다.

git clone url주소
git clone url주소 .      ---> 이때 뒤에 (.)을 붙이는 이유는 하위 디렉토리가 생기지 않기위해

이 작업을 통해 길동이는 유린이의 파일을 가져오게 되었다. 앞으로 길동이는 유린이의 원본 레파지토리에 대한 변경 사항을 제안과 유린의 레파지토리의 변경 사항을 길동의 로컬 저장소로 가져오게하려면?
  1. 아래 명령어를 통해 길동의 원격, 로컬 저장소와 유린의 원격, 로컬 저장소를 연결하기 위해 아래 명령어를 입력한다.
git remote add upstream https://github.com/유린/WANG.git
  1. 확인을하면 연결 된 것을 확인 할 수있다.
git remote -v
> origin    https://github.com/길동/WANG.git (fetch)
> origin    https://github.com/길동/WANG.git (push)
> upstream  https://github.com/유린/WANG.git (fetch)
> upstream  https://github.com/유린/WANG.git (push)

연결도 했겠다 길동이는 작업한 코드들을 유린이의 레파지토리에 바로 반영을 할 수있을까? 그건 아니다.

길동이는 본인이 작업한 코드들을 add, commit, push를 통해 길동이의 원격 저장소에 반영할 수는 있지만 유린이의 원격 저장소에 반영을 하려면 pull request라는 것을 해야한다.
pr을 날린다고하는데 pr을 날린 후 merge 권한이 있는 관리자만 최종적으로 유린이의 원격 저장소에 길동이가 작업한 소스 코드들을 확인하고 승인을 해주어야지 반영 할 수가 있는 것이다.

주의해야하는 점은 유린이의 원격 저장소에는 다른 사람들의 데이터가 쌓여 최신의 데이터를 반영하고 있지만 길동이는 현재 길동이가 수정한 작업들만 있고 유린이의 저장소에 있는 데이터는 없는 상태이다.
최신의 정보를 업데이트 하지 않고 push를 하게 되면 충돌이 되는데 길동이가 해야하는 작업은
1. 아래 명령어를 통해 최신의 정보를 업데이트 해주어야 한다.

git fetch upstream
git merge upstream/브랜치이름
profile
프론트엔드 개발자 꿈나무 💫

0개의 댓글