clone과 fork는 모두 같은 복제이지만, 내 로컬에 복제하는지와, Github repository 내에 복제하는지에 관련이 있다.
git clone은 내 로컬에 해당 저장소를 복사해 준다.
clone은 로컬에 해당 저장소를 복사해주는 것으로 쓰기 권한이 없으면, 수정하고 push할 수 없다. 그래서 기여자로 선언되지 않거나 타사 저장소를 활용하는 경우 Fork해서 활용하여야 한다.
다른 organization에 기여한 내용 잔디 옮겨 심기와 같은 방법도 찾아서 글을 작성하였던 나의 경우에 비춰 보자면, git clone을 하면 다른 organization에서 작업을 한 부분에 대해서는 내 git에 기록이 되지 않는다.
clone에서 한가지를 더 살펴본다면 fetch와 pull이 있다. fetch는 upstream 저장소에 새로 업데이트 된 log들을 확인할 수 있도록 메타 데이터를 가져온다. 그에 비해 pull은 upstream에 있는 정보들을 가져와 local에 있는 저장소를 덮어 씌운다. fetch를 통해 최신 정보를 확인하고, pull 하는 방법이 안전하다고 할 수 있다.
git fork는 내 git repository 상에 복사를 해서 원본 repository와 연결을 해준다.
위 캡쳐본에서 볼 수 있듯이, 내 git에 repository를 복사해주고, 원본과 연결을 해주어 "forked from ~"으로 표시해 준다.
또한 위와 같이 내 repository가 원본에서 어느 위치에 있는지를 확인 할 수 있도록 해준다.
이렇게 되면 수정 권한이 없어도, 수정을 할 수 있으며, 내 깃에도 기록들이 남도록 해준다.