Fork와 Clone의 차이점

2022. 11. 5. 02:11Git

728x90

먼저, Fork와 Clone을 이해하려면, 저장소에대한 기본적인 이해가 필요하다.

 

저장소에는 로컬 저장소와 원격저장소가 있다.

 

로컬 저장소

어떤 git 저장소든 내 컴퓨터 파일시스템에 저장되어있는 저장소

(git init 명령어 사용)

 

원격 저장소

인터넷이나 네트워크 어딘가에 있는 저장소를 말한다. 

Github는 원격 저장소를 제공해주는 웹 서비스 중 하나이다.

 

업스트림 저장소

fork해왔던 곳의 저장소를 upstream 저장소라고 한다.

 

이러한 저장소들을 확인할 수 있는 명령어는 아래와 같다.

git remote -v

 

그리고, 저장소들을 추가하는 방법은 아래와 같다.

git remote add [단축이름] [url]

* URL은 https://github.com/이름/저장소이름 이다.

 

fork란

다른 사람의 repository에 내가 어떤 부분을 수정하거나 추가하고 싶은 경우에 해당 repository를 내 계정의 repository로 복제하는 기능이다.

 

clone이란

특정 원격 repostiroy를 내 로컬 작업 공간에 복사하여 새로운 저장소를 만든다.

 

 

Pull request

포크된 저장소에 대한 변경 사항은 pull 요청을 통해 원래 저장소와 병합할 수 있다.

pull request의 경우 저장소 소유자의 허락이 있어야, 변경사항을 원래 자장소와 병합할 수 가있다.

 

Push

변경사항 또는 커밋이 완료된 수정 사항을 업스트림 저장소에 반영하는 것

 

 

복제 프로세스

  1. 사용자는 GitHub의 업스트림 저장소를 로컬 저장소에 복제한다.
  2. 복제후 로컬 자장소에서 소스파일을 편집하여 버그를 수정하거나 기능을 추가한 후 커밋한다.
  3. 변경사항 또는 커밋이 완료되면, 수정사항을 업스트림 저장소로 푸시한다.

 

포킹 후 Git Repo 복제

  1. 기여하고싶은 upstream 저장소를 포크한다.
  2. 내 저장소에서 로컬 저장소로 복제한다.
  3. 복제후 로컬 자장소에서 소스파일을 편집하여 버그를 수정하거나 기능을 추가한 후 커밋한다.
  4. 변경사항 또는 커밋이 완료되면, 수정사항을 내 저장소로 푸시한다.
  5. 저장소 소유자에게 변경 사항을 upstream 저장소에 병합하라고 요청을 보낸다.

 

정리하자면, fork와 clone의 차이점은 아래와 같다.

 

fork한 저장소를 clone하는 것은 원본 리포지토리를 내 GitHub 계정에 복사하고 그 복사본을 내 로컬리포지토리에 복사한다.

하지만, 원본 리포지토리를 clone하는 것은 내 GitHub 계정에 복사하지 않고, 바로 내 로컬 리포지토리에 복사한다.

 

따라서, 둘의 차이는 내 GitHub계정에 복사본의 존재유무이다.

 

또한, fork한 저장소 같은 경우에는 upstream 저장소에 변경사항을 반영하려면 upstream 저장소의 소유주에 허락을 받아야하지만, 원래 저장소를 clone하는 것은 허락을 받지 않아도 된다.

 

이상입니다~!

 

 

출처 및 참고

What is the Difference between Git Clone and Git Fork? (toolsqa.com)

 

What is the Difference between Git Clone and Git Fork?

Forking is a concept while cloning is a command in Git. In this we will take a look at the Difference between Git Clone and Git Fork?

www.toolsqa.com

 

728x90