git

#37 깃(Git) - 깃허브 포크(Fork)1 - 포크하기

에이블디 2022. 1. 18. 17:48

안녕하세요 여러분! 에이블디입니다!

 

이번 시간에는 다른 깃허브 리포지토리에 있는 소스를 자신의 깃허브 리포지토리로 복제해오는 방법에 대해 알아보겠습니다!

깃허브에 오픈소스들이 많다는 것 이전 게시물들에 간간히 말씀드린 것 기억나시나요?

 

깃허브로 오픈소스에 기여할 수도 있지만 오픈소스 이외에도 외주라던지 아니면 사이드 프로젝트를 팀 단위로 진행하는 경우 등 메인 깃허브 리포지토리를 하나 두고 자신의 개인 깃허브 리포지토리로 소스를 가져와 작업해야 할 상황이 있는데요, 메인 리포지토리에 있는 소스를 직접 수정해서는 안 되는 상황일 때 자신의 개인 리포지토리에 메인 소스 저장소를 복제하는 것을 '포크(fork)한다' 혹은 '포크 뜬다'라고 합니다.

 

그럼 지금부터 포크 뜨는 법에 대해서 알아보고 실습하도록 해볼게요!

 

먼저 실습을 위해 만들어둔 저의 개인 깃허브 리포지토리로 이동하겠습니다.

주소는 https://github.com/Dev-Jayden/fork_example 입니다.

 

이미지를 보시면 리드미 파일과 jayden_work.txt 파일이 있는 간단한 리포지토리인데요, 이곳으로 이동하셨다면 (다른 오픈소스 리포지토리나 포크를 하실 리포지토리로 이동하셔도 상관없습니다.) 오른쪽 상단에 'Fork'를 눌러줍니다.

 

'Fork'를 누르면 위의 이미지처럼 원이 빙글빙글 도는 화면이 나타난다면 리포지토리가 복제되고 있다는 뜻입니다!

잠시 기다리면 복제가 끝나게 됩니다.

 

복제가 끝내게 되면 다시 여러분의 개인 깃허브 리포지토리로 돌아가게 됩니다.

 

위의 이미지처럼 방금 포크 뜬 fork_example 리포지토리로 이동되어 있는 걸 확인할 수 있는데요, 화면 왼쪽 위를 보시면 '계정 이름 / fork_example'이라고 나타나 있고, 그 아래에 'forked from Dev-Jayden/fork_example'이라고 되어 있는 것 보이시죠?

Dev-Jayden/fork_example 리포지토리에서 포크 했다는 의미입니다.

리포지토리를 포크 했다면 해당 리포지토리에 있는 소스나 README 파일을 수정할 수 있습니다.

 

그럼 이번엔 포크 한 리포지토리를 로컬 리포지토리로 클론 해볼까요?

 

포크 한 소스는 깃허브의 리모트 리포지토리에 있기 때문에 사용자 컴퓨터로 리포지토리를 복제한 뒤 로컬 리포지토리에서 수정하고 푸시해야겠죠?

직접 실습해보도록 할게요!

 

'code'를 누르면 노출되는 'Clone'영역에서 리포지토리 주소가 적힌 오른쪽에 있는 버튼을 눌러 주소를 복사해주세요.

 

터미널에서 git clone 명령을 사용해 방금 주소를 복사한 리포지토리를 복제해줍니다.

$ git clone 복사한 주소 fork_test

주소 뒤에 적어준 'fork_test'는 fork_test 디렉터리로 클론 한다는 의미입니다.

 

위의 이미지와 같이 클론이 끝났으면 fork_test 디렉터리로 이동해 주세요!

그리고 ls 명령어를 사용하여 깃허브 리포지토리에 있던 리드미 파일과 jayden_work.txt 파일이 복제된 것을 확인해 주세요!

$ cd fork_test
$ ls

텍스트 편집기를 사용해 jayden_work.txt 파일을 열고 간단히 내용을 추가한 뒤 저장해 주세요!

$ vi jayden_work.txt

jayden_work.txt 파일을 수정했으니 커밋해 주어야겠죠?

커밋 메시지는 'add AbleD text'라고 하겠습니다.

$ git commit -am "add AbleD text"

커밋이 잘 되었네요!

로컬 리포지토리에서 커밋했으니 이제 깃허브 리포지토리로 푸시해야겠죠?

git push 명령을 사용해서 수정한 파일을 깃허브 리포지토리로 올려주세요!

$ git push

푸시가 완료되었습니다!

이제 웹 브라우저에서 깃허브 리포지토리로 접속해 보면, 방금 방금 커밋한 내용이 업데이트되어 있는 걸 볼 수 있습니다.

 

jayden_work.txt를 눌러서 내용도 확인해 볼까요?

 

추가한 내용도 잘 반영이 되어있네요!

 

하지만 이것은 포크 한 개인 리포지토리의 파일이 수정된 것일 뿐, 원래 소스가 있던 리포지토리(Dev-Jayden)에는 반영되지 않은 상태입니다.

Dev-Jayden의 개발자에게 수정한 내용을 원래 소스에 합쳐달라고 알려주어야 하는데요!

이 방법은 다음 시간에 알아보도록 하겠습니다!

 

그럼 여러분 다음 시간에 만나요!