본문 바로가기
생각하는 의자

[Git]Fork한 repository 업데이트하는 2가지 방법

by D0HA 2024. 1. 31.

다른 사람의 리포지토리를 fork, clone 한 뒤에 수정 내역이 생겼을 경우 최신화하는 방법 2가지를 알아보겠습니다.

우선 포크 리포지토리에 'git init'이 된 이후 과정입니다.

'git remote add origin'과 'git remote add upstream'까지 먼저 되어있으면 좋고, 아니어도 아래 과정에서 나옵니다.

 

 

1. 'Sync fork' 사용하기

fork 할 때와 별 차이 없고, 엄청 간단한 방법입니다.

 

 

원본과 동일한 경우

 

원본에 변경 사항이 있는 경우

 

fork한 리포지토리에 들어가보면 브랜치 별로 원본에서 변경된 점이 있는지 알려줍니다.

 

 

 

 

원본에 변경점이 있는 경우, 'Sync fork' 버튼을 눌러보면 동기화 할 수 있는 'Update branch' 가 활성화됩니다.

 

 

Sync를 맞춰준 후

 

'Update branch'를 눌러서 Sync를 맞춰주면, 이제 원본과 동일하게 업데이트 되었다고 알려줍니다.

여기까지만 하면 단순히 원본 리포지토리와 내 깃헙에 있는 포크 리포지토리가 맞춰진 것이기 때문에

pull까지 해야 최신화 된 리포지토리에서 이어서 작업할 수 있습니다.

 

 

 

pull을 하기 위해서는 저장소 경로가 연결되어 있어야 합니다.

 

본인의 경우에는 강사님이 수업할 때 쓰시는 코드를 가져와서 내용을 추가하기도 하고,

진도나갈 때마다 추가되는 파일도 업데이트해가며 쓰기 위해서 저장소 경로가 저렇게 설정되어 있습니다.

 

저장소 경로는 'git remote -v'로 확인 할 수 있고,

만약 경로 설정이 안되어 있다면 하단의 코드를 참고하여 추가할 수 있습니다.

붙여넣기 할 때 버튼을 잘못 눌러서(?) 주소 앞뒤로 이상한 문자들이 딸려오는 경우도 있으니 잘 확인해야 합니다!

혹시 잘못 썼어도 수정이나 삭제가 가능하긴 합니다.

 

 

 

$ git remote add origin 내 저장소 주소 붙여넣기
$ git remote add upstream 동기화 할 저장소 주소 붙여넣기

 

 

 

 

이제 'git pull'을 입력하면 원본에서 수정된 내역을 보여주면서 포크한 것도 최신화 완료!


2. 터미널에서 fetch, merge를 사용하기

어차피 터미널에서 작업하는거에 익숙해져야하니 이 방법이 더 좋다고 합니다.

 

 

'git init'과 저장소 경로 연결까지 된 후,

 

$ git fetch upstream

 

위 명령어를 입력해서 원본 리포지토리의 변경 사항을 확인합니다.

 

 

$ git merge upstream/main

 

그 다음 위 명령어를 입력하면 원본에서 업데이트된 내역을 보여줍니다.

'/main'이라고 되어있는 부분은 업데이트할 브랜치를 확인하고 그에 맞게 바꿔주시면 됩니다.

(master나 다른 브랜치 이름 등..)

 

merge를 여기서도 쓴다는게 신기했는데,

흔히 쓰는 'git pull'안에 merge도 포함된거라고 하네요..!

 

 

git push origin main

 

마지막으로 push하면 끝