Git : 포크 사용방법 총정리 (풀 리퀘스트, 원격 저장소 추가, 브랜치 보내는법)

|

오늘 배울 것

당신은 500명이 개발하는 프로젝트의 일원이 되었습니다.
프로젝트의 원본 레포지토리를 직접 수정할 수는 없습니다.
같은 파일을 누군가가 수정하면 상대방의 자료를 날리게 되고, 누가 어떤 것을 수정했는지 파악할 수 없습니다. 이는 이미 많은 개발자들이 겪어보았고, 버전관리의 개념이 등장합니다. 즉 깃의 등장이었던 것이죠.

때문에 복사본을 내 레포지토리에 가져와야 합니다.
그냥 복사하여 가져오는 것이 아니라, 원본 레포의 자식으로서 복사본을 가져오는 과정, 이를 포크라고 합니다.

네. 그 포크입니다. 재밌죠? 포크로 찍는다는 의미가 그대로 사용되었습니다.
그냥 복사하여 가져오는 것이 아닌, 포크(Fork) 하여 가져오게 되면 메인 레포와 연결되는 것이죠.

Fork 작업

포크는 깃허브 레포지토리의 우측 상단에 존재합니다. 이를 클릭하면 내 레포에 추가할 수 있게 됩니다.
한번 추가해보죠. 이름을 정한 뒤 생성 버튼을 클릭하면 됩니다.

생성된 레포를 보면 forked from {원본 레포 주소} 라는 메세지가 보입니다.
자 이제 이를 로컬환경에서 clone 적용해봅시다.

git clone https://github.com/{Fork한레포지토리주소}.git

우측의 초록 버튼을 클릭하여 URL 을 복사합니다. 그리고 위의 명령어를 입력합니다.

원격저장소 추가하기

git remote add {별명} https://github.com/{원본레포지토리주소}.git 

원본 프로젝트 저장소를 원격 저장소로 추가합니다.

git remote add upstream https://github.com/{원본레포지토리주소}.git 

이름을 따로 지정할 수 있지만 위와 같이 upstream 이라는 이름으로 통일하여 활용하면 기억하기도 유리하게 됩니다.

git remote -v

그리고 제가 추가한 경로를 모두 체크할 수 있게 됩니다. 앞으로 이 이름들을 후술하는 방법을 통해 활용할 수 있게 됩니다.

정리

  • origin : 내가 로컬에서 clone 한 경로
  • upstream : 내가 설정한 원격 경로 (보통은 부모 레포지토리 경로)

Branch 생성

브랜치는 이미 우리가 사용하고 있습니다. main 혹은 master 가 브랜치입니다.
이를 메인 브랜치라고 합니다. 보통은 배포를 하는 기본 브랜치로 사용하기에 아주 중요합니다.

그렇다면 추가기능을 만들때는 어떻게 할까요?
이 때 사용하는 개념이 새 브런치(Feature Branch) 입니다. 메인브런치와 분기하여 관리하며 이 브랜치에서 새 기능과 관련된 모든 개발을 진행합니다. 개발이 완료되었다면 메인 브런치와 합병할 수 있죠.

정리

  • 메인 브랜치 (Main Branch)
  • 새 기능 브랜치 (Feature Branch)


즉 새 브랜치를 사용하면 기본 코드 베이스를 변경하지 않고도 새로운 기능을 추가하거나 버그를 수정할 수 있게 됩니다.

  • 주의 : 아래의 명령어는 push 되지 않은 작업물을 날릴 수 있습니다
git checkout {브랜치명}

chekout 을 통해 브랜치를 변경할 수 있습니다. 아직 push 하지 않는 작업 내용은 모두 날라갑니다.

branch 리스트 보기

git branch

브랜치가 어떤게 있는지 확인할 수 있습니다.

Push

git add
git commit -m "메세지"
git push origin {생성된브런치명}

자 이제 push 에 대해 뜯어봅시다.

origin 은 upstream(윗 내용 참조) 이 될 수 있습니다. 그리고 브랜치 명을 입력하여 처리할 수 있습니다.

git push origin main

이렇게 써먹을 수 있는것이죠.

Pull Request 생성

  • Fork 한 레포지토리에 들어가면 Compare & Pull request 버튼이 보입니다
    (code 태그 옆에 Pull request 를 클릭해도 됩니다)
  • 원본 레포지토리 관리자가 Merge 여부를 판단하여 끝냅니다

Merge 이후

코드 동기화

/* git pull {별명} {브랜치명} */
git pull origin main

내 로컬 환경에 별명으로 설정한 값을 가져옵니다.

git pull upstream main

응용 해볼까요? 이름을 upstream 으로 지정하면 편하게 가져올 수 있게 됩니다.

pull 받은 자료 내 레포지트리에 업데이트

git push origin main

자 이제 수정된 자료를 로컬에만 가지고 있으니 제 레포지토리에 올려야 합니다.
위의 명령어를 입력하여 마무리 짓습니다.

브랜치 삭제

git branch -d {생성된브랜치명}

더이상 사용하지 않는 브랜치는 삭제하는 것이 좋습니다.

참조

  • https://thalals.tistory.com/31

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다