git fork에 대해 간단하게 알아봅시다.

GIT 2021. 8. 9. 03:40

 안녕하세요. 이번 시간에는 fork에 대해서 배워보도록 하겠습니다. 리눅스의 fork와 비슷한 거 같은 것은 기분 탓일까요? 원본 repo를, 복제하는 것이 fork입니다. fork 하고 clone을 해서 적절히 수정 사항을 작성한 다음에 Pull Request를 보내서 merge 시키는 것은 많이 들어보셨을 텐데요. 이 일련의 과정을 제 서버에 구축한 gitlab으로 실습해 보겠습니다.

 


 

 c kh는 cho kh의 GitExample의 developer role을 가지고 있었다고 합시다.

 

 

 gitExample의 Fork를 눌러 봅시다. 그러면, A fork is copy of a project라고 뜨면서, original project의 영향 없이 change를 할 수 있다고 뜹니다. 이것이 fork의 전부라고 할 수 있어요. 한 단어로 말하면 복제본입니다. original의 영향 없이, 누군가 포크를 해서 복제본을 바꿀 수 있다. 원본이 영향 없다는 것은 매우 중요합니다.

 

 

 Updated 1 minute ago라고 되어 있는 것이 fork한 것입니다. 이 레포로 들어가서 cho2.txt를 바꿔 봅시다.

 

 

 Hi. my name is cho2만 있었는데요. 이 밑에 nice to meet you!를 추가하고 commit을 해 봅시다.

 

 

 그러면, c kh의 gitExample에 있는 cho2.txt에는 nice to meet you! 라는 문구가 추가되었음을 볼 수 있어요.

 


 

 

 그런데, 원본 레포의 gitExample의 cho2.txt에는 그냥 내 이름이 cho2라는 것만 있는 상태입니다. 그런데, 저는 cho kh에게 만나서 반가워요! 라는 문구를 추가한 변경사항을 반영해 달라고 요청하고 싶어요. 깃랩에서는 Merge requests입니다. 깃헙에서는 PR을 날린다고 합니다.

 

 

 프로젝트에 있는 Merge requests를 눌러 보시면 source branch와 Target branch를 선택하는 부분이 뜨게 됩니다.

 

 

 Source는 제 gitExample이고, Target은 cho의 gitExample입니다. 선택한 다음에, Compare branches and continue를 누르고 계속 뭔가 눌러보시면 요청이 올라갑니다. 이제, cho kh로 접속해 보겠습니다.

 

 

 그러면, requests에 뭔가가 뜹니다. 눌러 보니까, Update cho2.txt가 있고, Merge 버튼이 있네요. 이것을 눌러 보겠습니다.

 

 

 그러면, 변경 사항이 잘 반영되었음을 알 수 있습니다. 그러면, 한 가지 예를 더 들어봅시다. tony님의 코딩 테스트 repo에 기여를 하고 싶어요. 어떻게 하면 좋을까요? tony님의 레포에 들어갔는데 수정 권한이 없다면, fork로 복제본을 얻어 옵니다. 그러면, tony님 거랑, 제가 tony님 것을 복제한 거랑은 별개로 돌아갑니다. 복제한 것에서 수정할 부분을 수정한 다음에, PR을 보내면 됩니다.