본문 바로가기

기록/기타

[Git] Fork와 Clone

SMALL

주절.

더보기

 

몇 차례의 팀 프로젝트를 진행하면서 팀원들과 파일 공유를 해야 했다.

 

공유 폴더를 이용하는 경우에는 파일의 비교와 취합이 오래걸렸고, 작업자도 변경된 파일을 일일이 건네줘야하는데에서 불편함이 있었다. 간혹 파일이 깨지거나 잘못올라가면 여러사람 골때린다.

 

이후에 git을 사용하면서 팀장의 저장소를 clone하고, contributor로 내 게정을 등록하여 PR을 보내는 방식으로 작업했다. 대규모도 아니고 수업연계 프로젝트이기 때문에 기본적인 기능을 사용하기로 한 것이다.

 실제로 프로젝트 중에 github 트러블이슈가 너무 많았다... 제대로 공부하지 않고 부딪히면서 작업한 팀원 개개인의 탓도 있었겠지만 다들 개인적으로만 이용하고 팀으로 작업하다보니 코드 충돌 문제나 저장소 자체의 문제가 자꾸 생겼다. 그리고 능숙한 사람이 한명이라도 있으면 해결이 좀 더 수월했을텐데 전부 우왕좌왕하다가 어차피 프로젝트 초기니 원인도 모르겠고 그냥 저장소 날리자~ 로 해결해버린(?) 경우도 있었다. 물론 다들 차츰 익숙해지면서 push와 pull의 사용도 원활하게 작업되었다.

 

한이음 멘토링 프로젝트에서도 git 사용을 권장했고, 다인원이기 때문에 당연히 git을 사용했다.

위에서 작성한 교내 프로젝트에서 미리 깃에 익숙해져서 정말 다행이라고 생각했는데, 이 프로젝트에서는 branch를 안만들고 master에다가 바로 push를 해버리는 팀원이 생겨서.. 코드버전관리가 굉장히 불안했다.

 

하여튼 지금도 초보지만 훨씬 더 초보일 때 겪을 트러블을 겪으며 다른 프로젝트를 할때는 기본적이지만 아직 사용하지 않은 기능을 사용하고자 노력하고 있다.

 

그래서 이번에 기록할 것은 Fork와 Clone.

사용해보긴 했으나 이게 진짜로 맞는지도 모르겠어서 궁금한것과 알게 된 것을 정리해놓으면

나중에 헷갈릴때마다 확인할 수 있으니까 좀 더 낫지 않을까? 하는 생각이다.

 

Fork

오리지날 프로젝트에 영향을 주지 않고 자신의 저장소에 수정할 수 있다.

수정 후 오리지널 측에서 받으면 Pull Request를 통해 수정 사항을 기여할 수 있다.

 

Fork 원본 동기화

작업을 진행하다보면 원본 레포지토리의 최신 파일을 내 리포지토리로 가져와야 할 때가 있다.

기존의 fork를 삭제 후, 다시 fork하는 방법이 있지만 내 리포지토리에도 업데이트 내용이 있다면 또 업데이트를 반영해야 한다.

 

이 경우에는 다른 방법을 쓴다.

clone한 fork 저장소에 원본 주소 추가 -> 원본저장소 fetch, 원본 master merge

(다른 branch가 있다면 branch 명을 바꾸어 반복)

 

1. 터미널에서 현재 원격 주소 확인

git remote -v

 

2. 원본 주소 추가

git remote add [upstream] [주소]

 

3. 추가 확인

git remote -v

 

4. PC저장소로 경로 이동, 원본 fetch

git fetch [upstream]

 

5. master branch를 체크아웃

git checkout master

 

6. upstream/master과 합치기

git merge upstream/master

Clone

오리지날 프로젝트를 자신의 원격 저장소에 복사한다.

원격저장소와 로컬을 함께 동기화할 수 있다.

복제 프로젝트에 변경이 있어도 오리지날 프로젝트에 기여할 수 없다.

 

즉, 오리지날 저장소에 연결하려면 Fork, 그렇지 않고 개인적으로 이용하거나 하는 경우에는 Clone 을 쓰면 될 것 같다.

 

+

더보기

이전에 진행한 프로젝트는 Contributor로 팀장의 git에 참여하여 수정하고, 권한에 따라 PR로 코드를 수정하는 식으로 진행했는데.. 단계가 생략된 Fork의 형태인가?

직접 다른사람의 저장소에 관여하고, 내 git 주소에는 fork하지 않았으니 당연히 내 저장소에 기록은 없으나.. 

종종 깨달은바가 있거나 생각난게 있으면 덧붙일것같다.

 

 

SMALL