MyPrograming
Fork & 동기화하기 본문
Fork
fork는 타인의 깃허브 repository에서 오픈소스 상태의 코드나 파일들을 내 repository에 그대로 복사하여 특정 기능을 수정하거나 추가하여 사용하고 싶을 때 사용하는 Github의 기능이다. 이 때, fork한 나의 저장소와 원본의 저장소는 서로 연결되어 있기때문에 원본 저장소의 변화된 부분을 그대로 내 fork 저장소에 반영시킬 수 있다.
나는 최근에 3명의 팀원을 꾸려서 독립서점과 관련된 웹 플랫폼 프로젝트를 진행하면서 원본 저장소는 다른 팀원의 repository로 지정해두고, git의 협동 기능을 통해 각자 분담하여 작업한 내용을 지속적으로 push하고 병합하는 과정을 반복하면서 fork된 나의 repository에는 프로젝트 초기상태만 반영되어 있는 것을 보고 작업이 끝난 내용들을 반영 시켜야겠다고 생각하여 관련 내용들을 찾아보았다.
위와 같이 프로젝트 초기에만 fork를 해두어서 내 repository에는 작업이 많이 진행된 원본 repository와 달리 거의 아무것도 없는 상태이다.
나는 이미 fork를 해두었지만, 타인의 repository를 사용하고싶은 경우, 오른쪽 상단의 Fork 버튼을 누르면 나의 Git 계정에 새로운 저장소가 생성된다.
Fork를 진행하고 나서 로컬에 저장소 주소를 입력하여 파일을 내려받는다.
Pull request
fork 저장소에 clone이 완료되었다면 origin이라는 이름에 fork 저장소가 지정되어 있는 상태가 되었다.
그리고 원본 저장소의 주소도 저장해줘야 해서 아래와 같이 진행을 한다.
로컬에 변경된 사항에 관한 파일 생성이 전부 끝난 상태이다. 이제 fork 저장소에 push를 하도록한다.
push를 하려고 하자 에러가 발생하였다. 찾아보니 원격 저장소와 로컬 저장소의 상태가 달라서 나는 오류라고 한다. 그렇기 때문에 우선 pull을 해주어 둘의 상태를 같게 해준 뒤에 push를 진행하였다.
pull이 성공적으로 진행되었으니 이제 push를 해보겠다.
push까지 성공적으로 진행되었으면 이제 fork 저장소로 이동해보자.
내가 fork한 저장소로 가보니 중간에 "This branch is 243 commits behind yjk5309:master." 라는 문구와 함께 알림이 하나 떴다. pull request 버튼을 누르면 두 저장소의 변경 사항을 비교한 후에 merge를 진행할 수 있다. merge할 저장소를 내 fork 저장소로 지정하고 pull request를 진행하였다.
성공적으로 내 fork 저장소에 결과물들을 동기화시켰다.
몇 개월에 걸쳐서 끝난 프로젝트이기에 더욱 뜻이 깊다. 코라나가 끝나면 팀원과의 회식을 먼저 해야겠다!