git에서 프로젝트를 복사해서 가져오는 방법에는 두 가지가 존재한다. 어떤 경우에는 그냥 프로젝트를 clone해서 사용하기도 하고 어떤 경우에는 fork해서 사용하기도 하는데 그 차이점을 구분해두면 좋을 거 같아서 정리를 하게 되었다.
우선 fork는 원본 레포지토리에서 내 레포지토리로 그대로 복제하는 것인데, 작업하는 파일을 그대로 복사해서 가져오면서 원본과 연결된다. 때문에 원본 작업 파일의 변화를 알 수 있고 변화 내용을 내 작업에 반영도 가능해진다.
원본 레포지토리에서 버전이 변경되면(commit, push가 발생하면) 그대로 fork 받은 내 레포지토리에 반영할 수 있게 할 때는 fetch, pull의 과정이 필요하고 나의 레포지토리에서 버전이 변경되는 경우에 원본 레포지토리에 변경된 버전을 반영하고 싶을 땐 PR을 보내야 한다. PR이 승인 되면 내가 commit, push한 과정이 원본 레포지토리에 merge 되어 적용된다.
PR(pull request) 설명 및 사용 방법 참고
fork 받을 원본 레포지토리에서 상단에 보이는 Fork 버튼을 눌러준다.
버튼을 누르면 fork받을 레포지토리를 지정할 수 있도록 하는데 지정할 레포지토리가 없다면 Create a new fork를 눌러주면 된다.
버튼을 눌렀다면 레포지토리 이름을 지정하고(보통 자동으로 원본 레포지토리 명이 따라오지만 수정 가능하다) Create fork 버튼을 눌러주면 지정한 레포지토리에 원본 레포지토리의 프로젝트가 복사된다.
복사된 프로젝트는 원격 저장소에서만 복사된 상태로 로컬 컴퓨터에 파일을 받아서 이클립스 등에서 사용하기 위해서는 아래 이클립스로 clone 하기를 참고한다.
우선 git에는 fork 명렁어가 없기 때문에 명령어로 fork를 하려면 clone, remote, add, commit, push 명령어를 함께 사용해야 한다.
먼저 로컬 터미널에서 git clone 복사할 레포지토리 주소
명령어를 작성하여 원본 파일을 복사한다. 주소는 위 사진처럼 원본 레포지토리에 들어가서 Code 버튼을 누르고 아래 주소를 복사해서 붙여넣기 하면 된다.
💡 이때 clone을 하면 default 브랜치만 불러와서 다른 브랜치를 볼 수 없게 된다. 다른 브랜치를 확인하고 싶으면 git branch -a
명령어를 입력하여 원격 저장소에 있는 모든 브랜치를 확인할 수 있다.
복사가 완료되면 git remote add upstream 원본 레포지토리 주소
를 실행한다. 로컬 기준으로 보고 터미널에서 작업하고 있기 때문에 upstream은 원본을 만들어낸 상류 저장소로 원본 레포지토리가 된다.
복사한 파일에서 작업 후 add, commit 명령어를 실행해서 내 컴퓨터에 작업된 내용에 대해 버전을 업그레이드 한다. git add 저장할 파일들
을 실행해서 commit할 파일들을 추가하고 git commit -m “커밋 메시지”
를 실행한다.
이제 내 레포지토리에 업그레이드 된 버전의 파일을 올리기 위해서 push 작업을 진행하기 위해 git push 원격저장소명 브랜치명
을 실행한다.
💡 보통 clone
을 사용해서 복제해온 원격 저장소 이름은 origin
으로 지정되고 git remote
명령어를 실행해서 원격 저장소 이름을 확인할 수 있다.
clone은 특정 레포지토리에서 내 로컬 저장소를 연결해 데이터를 복사해서 가져오는 것을 말한다. 내 레포지토리를 생성하여 clone으로 복사한 작업 파일을 내 레포지토리에 올려서 사용할 수 있다. 원본 레포지토리인 곳과는 연결되지 않았으므로 PR를 보내거나 원본 레포지토리의 작업 내용을 알 수 없다.
clone하는 방법은 fork보다 상대적으로 간단하다. Github에서 clone 받을 때는 특정 레포지토에 들어가 Code 버튼을 눌러서 주소를 복사한 뒤 IDE(이클립스 등)나 터미널에서 해당 주소를 가지고 프로젝트를 복사해서 사용하면 된다.
IDE에서 복사한 주소가지고 프로젝트를 임포트 할 수 있다. Project Explorer에서 마우스 우클릭>import>Projects from Git(검색창에 git을 치면 바로 나온다) 를 실행한다.
누르면 위와 같은 화면이 뜨는데 Clone URI를 눌러준다.
해당 화면이 뜨면 복사한 주소를 URI에 붙여넣기 하면 Host나 Repository path는 자동으로 들어간다. 아래 유저와 비밀번호가 자동으로 뜨지 않는다면 토큰 발급 받은 후 로컬 컴퓨터에서 인증하고 나면 다음부터는 자동으로 적용된다.
다음으로 넘기면 위와 같은 화면이 뜨는데 복사할 브랜치를 선택하면 된다.
위는 복사된 프로젝트 파일을 로컬 컴퓨터에 저장할 경로를 지정하는 것으로 자동으로 git 폴더 내부에 위치가 잡히긴 하지만 원하면 Browse 버튼을 클릭해서 위치를 변경할 수 있다.
💡 이때도 clone된 원격 저장소 이름은 기본적으로 origin으로 셋팅된다.
* 원래 위처럼 하나의 레포지토리 안에 여러 개의 프로젝트를 관리하는 일은 없겠지만…😅 만약 프로젝트가 여러개 존재한다면 원하는 프로젝트 폴더만 선택해서 받을 수 있다.
Finish 버튼을 누르면 clone이 완료된다.
터미널에서 clone하는 방법은 fork 방법과 비슷하지만 remote 명렁어만 제외시키면 된다.
좋은 글 감사합니다.