본문 바로가기
Git

Git - fork 하고 원격 레포 동기화하기(fetch, pull request)

by 새발개발JA 2024. 8. 28.
반응형

 

 

오픈소스, 프로젝트 등 다른 사람이 만든 레포 기반으로 작업해야할 때는 여러가지 방식이 있다.

그중 하나가 Fork  방식이다.

 

Fork  방식은 쉽게 말해

다른 사람의 레포를 나의 레포로 복사해와서 여러가지 작업을 마친 뒤

Pull request  를 올려서  merge 를 하는 방식이다.

(물론 그사이에 다른 사람이 작업할 수도 있으니 중간중간 최신화도 시켜주면서 말이다)

 

 

1. 깃헙 레포 페이지를 들어가보면 Fork  라는 버튼이 보인다. 저 버튼을 눌러보자 

 

 

2. 카피 레포(fork) 를 만들어주는 페이지로 들어가진다.  이렇게 레포를 만들어주자  

 

 

3. 이제는 이 카피 레포를 원격 레포와 동기화 시켜주자 

일단 오리지널 레포를 upstream 이라는 이름의 원격 저장소로 추가해주었다.

$ git remote add upstream https://github.com/포크레포주인의깃헙아이디/레포이름.git

 

혹시 url 을 잘못지정해줬다면 set-url 옵션으로 변경해주자!

$ git add remote set-url upstream https://github.com/...(정정할 주소)..

 

 

4. 원격 레포는 항상 업데이트 되고 있으니, 최신화 시켜주자

fetch 의 개념은 데이터를 받아와 최신화 시켜주는 것이다.

git fetch upstream 은 upstream (원격 저장소, 즉 오리지널 레포) 의 브랜치들을 최신화 시켜주는 명령어이다.

아래의 예시를 살펴보자면  upstream 저장소의 main이라는 브랜치의 내용이 최신화되었다.

$ git fetch upstream
$ From https://github.com/내아이디/포크한레포이름
  6b40512..12bc612  main       -> upstream/main

 

** 최신화 하면서 받아온 데이터들( 커밋, 태그, 브랜치 등등)은  .git 디렉터리에 저장되고, upstream/main 의 브랜치 형태로 브랜치 정보가 저장된다.

 

 

5. 이제 마음놓고 내가 로컬 레포에서 작업한 코드들을 원격 브랜치에 합쳐주자

이렇게 되면 레포주인이 업로드한 upstream/main 의 코드가  → → →  나의 로컬 main  코드로 합쳐지게 된다

 

$  git checkout main 	    # 메인브랜치로 온후
$  git merge upstream/main  # upstream 원격저장소의 main 브랜치와 병합

 

 

6 나의 원격 저장소인  origin/main 으로 push 해준다

$ git push origin

 

 

7. 나의 깃헙 레포 페이지로 돌아가 pull request 메뉴를 눌러보자.

방금 따근따근하게 푸시된 origin/main  의 코드를  레포주인장의  main  으로 머지할 수 있는 리퀘스트를 보낼 수 있을 것이다 :)  

반응형

댓글