본문 바로가기
개발/기타

[Git] Fork한 Repository 최신 내용 가져오기

by 카펀 2020. 11. 5.

GitHub에서 코딩 테스트 스터디에 최근 참여하고 있습니다.

(학교 과제나 시험기간 때문에 바쁠 때에는 부득이하게 참여하지 못 하기도 합니다 ㅠㅠ)

그러면서 지금까지 단순히 온라인 저장소로만 사용했던 GitHub을,

다른 사람의 repository에 commit하는 방법을 간접적으로 접해보게 되었습니다.

 

제가 코딩테스트 스터디를 함께하고 있는 GitHub 주소는 다음과 같습니다: 링크

위 repository를 fork한 후, 시간이 조금 지나게 되면 아래와 같은 메세지를 볼 수 있습니다.

2 commits behind

즉, 제가 fork한 repository가 원본에 비해 몇 단계 뒤쳐져 있다는 말입니다.

이를 최신 상태로 유지하려면, 원본 repository에서 최신 사항을 가져와야 합니다.

간단히 비유하자면, 우리가 쓰고 있는 휴대폰의 앱의 최신 버젼이 나와 있고, 이것을 업데이트 하는 것과 비슷합니다.

 

1. Fork한 repository를 내 컴퓨터에 clone 하기

 

$git clone https://github.com/나의_clone한/repository_주소.git
$git clone https://github.com/kchung1995/Code-Test-Study.git

 

clone repository

내가 clone한 repository의 주소를 그대로 입력하면 됩니다.

저의 경우, https://github.com/kchung1995/Code-Test-Study를 입력하였습니다.

 

clone이 성공적으로 완료되면, 디렉토리 아래에 Repository의 이름을 한 폴더가 생겨나며, 그 아래에 repository의 내용이 담겨 있습니다.

 

2. Remote repository를 확인하기

우선 Clone한 프로젝트의 디렉토리로 이동합니다.

 

$git remote -v

 

위 명령어를 이용하여 현재 repository의 remote repository를 확인할 수 있습니다.

git remote -v

지금은 fork한 repository만 목록에 뜨는 것을 확인할 수 있습니다.

우리가 fork해 온 원본 저장소를 remote repository 목록에 추가하도록 합시다.

 

$git remote add upstream https://github.com/fork해온_원본/repository의_주소
$git remote add upstream https://github.com/CodeTest-StudyGroup/Code-Test-Study

 

추가한 후에 다시 한번 remote repository 목록을 출력해 보면, 아래와 같이 원본 repository가 upstream으로 추가된 것을 확인할 수 있습니다.

git remote -v

upstream으로 추가된 원본 repository가 보이시나요?

 

위 과정은 최초 1회에 한해 해 주시면 되고, 이후부터 설정된 repository를 최신 상태로 가져오고자 할 때에는 3번부터 진행해 주시면 됩니다.

 

3. 원본 repository fetch, merge, 이후 fork repository로 push

 

$git fetch upstream
$git merge upstream/master
$git push

 

위 세 명령어들은 차례로

  • 원본 repository의 정보를 fetch, 즉 가져오고,
  • 원본 repository의 정보를 합치며,
  • 이를 fork repository로 push합니다.

fetch, merge를 한 번에 수행할 수 있는 명령어 pull도 존재합니다. pull은 fetch를 수행한 이후 즉시 merge하므로 충돌이 일어날 수 있지만, fetch는 바로 변경사항을 반영하지 않으므로 충돌에 대하여 상대적으로 안전합니다. 충돌이 발생할 경우, 충돌을 해결해 주고 다시 commit해 주면 됩니다.

 

4. 최신 내용이 잘 가져와졌는지 확인하기

push가 잘 되었다면, GitHub 상에서 repository가 최신 상태로 업데이트 되었는지 확인해 봅니다.

 

성공적으로 원본 repository로부터 최신 내용을 가져왔습니다.

성공적으로 최신 내용을 가져온 것을 확인할 수 있습니다.

"This branch is even with CodeTest-StudyGroup:master" 라는 메세지가 상단에 떠 있음을 확인할 수 있습니다.

이제 Fork한 repository를 지우고 다시 fork하는 일은 없도록 합시다. 😊😊

 

 

취업 준비를 시작하며 알고리즘/코딩테스트 공부를 통해서도 많이 배우지만,

git과 같이 이전에 써보지 않았던 새로운 도구 및 기술을 접하는 것도 좋은 것 같습니다.

git을 더 효과적으로 사용하기 위해 많이 배우고 있습니다.

 

참고한 글:

댓글