본문 바로가기

Git/Git

git clone, degit, fork, pull 사용법, 특징, 차이점

728x90

Github에서 코드를 가져오기 위한 방법으로는 총 4가지가 있다. 

 

(1) git clone 명령

(2) npx degit 명령

(3) fork 해오기

(4) git pull 명령

 

이 4가지 방식의 사용법과 특징을 알아보자.

 


 

 

 git clone 

 

<사용법>

 

1.  복제하려는 Github repository로 가서 <코드>를 눌러 주소를 복사

 

2. git clone 하기

git clone {주소} {파일이름}

 // {파일이름}은 저장소를 복제할 위치를 지정하는 것(생략가능)

// Github에서 저장소를 clone하면 origin remote에 저장소 주소(clone한 저장소)가 저장됨

 

ls

// 복제 잘됐는지 확인

 

3. .git 폴더 삭제하기 (git 이력 지워야 하는 경우)

ls -a

// 모든 파일 보기

rm -rf .git

// .git 폴더 삭제 

ls -a

// 제대로 삭제됐는지 재확인하기 (에러 방지 차원)

 

4. 저장소 다시 생성하기

git init

 

 

5. Github에 새로운 repository 만들고 주소 복사해오기

 

6. 새로운 저장소에 연결하기

git remote add origin {새로운 저장소 주소}

 

7. 커밋 내역 확인하기 

git status

// No commits yet 
// Untracked files

 

8. 스테이징 하기

git add .

// 모든 파일

git status

// 재확인

 

9. 커밋하기 (커밋 메시지 입력 필수)

git commit -m "메시지"

 

10. 원격 저장소에 push 하기

git push origin main

 

 

 

<특징>

 

1. 원격 저장소에 있는 것을 내 로컬로 가져온다

2. 원격 저장소의 내용과 로컬 저장소의 내용이 일치하게된다

3. remote 설정이 자동으로 된다   *git pull과의 차이점

4. git 이력 있음 (=git 히스토리를 가져온다 =버전관리를 가져온다)  *degit, pull과의 차이점

→ 확인방법:  git remote -v   // 현재의 git 프로젝트에 연결되어있는 repository 확인 가능 (=clone한 저장소의 remote정보를 확인 가능)

5.  git 이력을 없애려면 추가적으로 명령어를 입력해줘야함 (따라서 상황에 따라 degit이 편할 수도 있음)

rm -rf .git

 

 

 


 npx degit 

 

<사용법>

 

1. 복제하려는 Github repository로 가서 코드를 눌러 주소를 복사

2. 터미널에 명령어 작성

npx degit {주소} {파일이름}

//  *npx: npm 패키지 설치 없이 일회성으로 사용할 수 있는 node.js 명령어
    *degit: Github에 있는 특정 원격 저장소를 현재 로컬에 다운로드

//  {파일이름}은 저장소를 복제할 위치를 지정하는 것

 

 

 

<특징>

 

1. 원격 저장소에 있는 것을 내 로컬로 가져온다

2. git 이력 없음(= .git 파일을 가져오지 않음 =버전 관리가 없는 새로운 프로젝트를 가져온다)

 

 


 fork 

 

<사용법>

(fork 사용법을 알면 clone과 pull까지 알 수 있음)

 

1. 복제할  원격 저장소(A라고 지칭하겠다)에서 fork 버튼을 누른다
내 Github에 똑같은 원격 저장소가 생긴다

 

2. clone해서 로컬에 나의 저장소가 생기게 한다

git clone {내 원격저장소 주소} {파일이름}

// 여기서 "내 원격 저장소 주소"란 fork해서 내 Github에 복제된 저장소를 말함

 

3. 클론한 내 저장소로 이동한다

cd {파일이름}

 

4. A저장소를 upstream으로 등록한다

git remote add upstream {A저장소 주소}

// A저장소 주소를 (upstream이라는 별칭의) 원격 저장소로 지정한다

// A저장소와 내 로컬 저장소와 싱크를 맞추는 과정 (두 저장소의 연결고리를 만들기)

 

5. 모든 remote 저장소를 업데이트 한다

git remote update

 

6. 로컬로 가져올 브랜치를 지정한다

git checkout -t upstream/{브랜치이름}

 

7. upstream 저장소(A저장소)에 있는 커밋내역을 로컬로 당겨오기

git pull upstream

 

*아래 명령어는 특정 브랜치만 당겨올 경우에 사용

git pull upstream main

// git pull {원격 저장소의 별칭} {원격 저장소에서 받아오고자 하는 브랜치의 이름}
// upstream 저장소(A저장소)에 main브랜치에 있는 커밋내역을 당겨오기

 

8. A저장소에서 당겨와서 업데이트한 내용을 다시 내 원격저장소(main브랜치)에 보낸다 (싱크맞추기)

git push origin main

 

 

 

<특징>

 

1. 다른 원격 저장소에 있는 것을 내 원격 저장소로 가져온다

→로컬로 가져오려면 따로 clone을 해야함

2. git 이력 없음  *clone과의 차이점

3. Github 자체에서 제공하는 기능

 

 

 


 git pull 

 

<사용법>

 

git init

// git 프로젝트를 시작한다

 

git remote add origin {주소}

// 주소를 (origin이라는 별칭의) 원격 repository로 지정한다

 

git pull origin main

// git pull [원격 저장소 이름] [브랜치 이름]

// 원격 리포지토리를 현재 main에 병합한다

 

 

 

<특징>

 

1. 원격 저장소에 있는 것을 내 로컬로 가져온다

2. remote 설정을 자동으로 하지 않는다  *clone과의 차이점

3. 원격 저장소의 내용을 가져와서 현재 브랜치와 병합(merge)까지 실행한다 (기존 작업 유지하면서 새로운 코드 추가 가능)

4. git 이력 없음  *clone과의 차이점

 

 

 

 

 

 

728x90