본문 바로가기
Git/이론 및 용어

github 의 fork 와 clone 의 차이

by tokkiC 2022. 7. 20.

깃허브에는 fork 와 clone 기능이 있는데

다른 사람의 저장소 repository 를 가져와서 사용한다는 느낌은 비슷한데 뭐가 다른가 찾아보았다

가져오는게 뭐가 다른데?

아래는 쉬운 이해를 위해 나만의 해석이 가미되었다


fork


fork는 call by reference 와 유사하다
음식을 포크로 찍어 가져오듯 내 girhub 내의 저장소로 원본 저장소를 가져올 수 있다
가져오려는 원본 저장소와 연결되어 있어서 원본 저장소에 새롭게 커밋, 수정 되면
fetch 와 pull 를 하면 내 깃허브 내의 그 저장소에 그 변화를 적용시킬 수 있다
변수처럼 원본 저장소에서 호출해서 가져올수 있는 것이다. 물론 그렇게만 설명할 수도 없는것이
fetch 와 pull 을 해야 변화가 적용이 되며, 호출한 쪽(내 깃허브 내 그 저장소)에서
변화를 적용시키려면 원본 저장소의 관리자에게 pull request를 보내고 관리자가 승인하여야만
내 변화가 commit & merge 되어 적용이 된다는 점이다
call by reference 에 권한 및 수정 권한을 관리자만 가지고 있게 만든 관리 방식이라 생각할 수 있겠다

.

.

clone


clone은 call by value 와 유사하다
클론은 같은 것을 새로 만들어 내는 그 의미처럼, 원본 저장소를 내 로컬 컴퓨터에다운 받아서 가져올 수 있다.
다운로드 됐으니 원본과 연결이 끊긴 복사본이라고 할 수 있다
새로 커밋할 것이 있어도 권한이 없으면 clone한 원본 저장소의 origin/master 브런치에 push할 수 없으며
원본 저장소와 연결도 끊겨있으므로 원본 저장소의 commit 기록, 로그도 알 수 없고 적용할 수 없다
만약 원본 저장소를 만들고 거기서 프로젝트를 클론으로 가져와 공동 작업을 하려 한다면
내 작업을 커밋 후 origin/master 브런치 등에 push 하기 전에 내 저장소에 fetch와 merge 를 해야만 한다
연결되어 있지 않으므로, 공동 작업자가 변경한 내용이 적용된 프로젝트는 내 로컬 저장소의
내가 수정한 것에도 적용을 해야 이전 변경도, 내 변경도 적용하여 브런치가 관리 될 수 있기 때문이다
이런 이유로 fetch와 merge 전에 push를 하려할 시엔 충돌이 생겨 에러가 날 수 있다
fork 와 마찬가지로 call by value 에 권한 기능이 추가된 방식이라 생각할 수 있겠다

'Git > 이론 및 용어' 카테고리의 다른 글

gitLab github 사용해서 프로젝트 올리기  (0) 2022.08.03
gitignore 설정  (0) 2022.08.01

댓글