💻 Programs & Tools/😸 Git

[Git/Github] 원격저장소에서 로컬저장소로 복제하기(clone) / pull, push

민이언즈 2023. 8. 14. 20:38
git clone은 어떤 경우에 필요할까?

1. 회사에서 작업한 프로젝트를 집에 와서 수정하고싶을 때
2. 다른 프로젝트에 참여하기 위해 Git 저장소를 복사하고 싶을 때 등등

깃허브 원격 저장소(레파지토리)의 프로젝트 내용들을 로컬 저장소로 가져오고 싶다면 clone을 이용하면 된다.
clone을 하는 방법 및 순서에 대해 알아보자.

 

관련 이전 포스트 참고 

[Git/Github] 원격 저장소와 로컬 저장소 연결 / 깃허브 레파지토리 업로드(commit & push)

 



0. 깃허브 레파지토리 주소 복사

  • 깃허브 레파지토리에 가서 https주소를 복사해온다. 빨간 박스 안의 오른쪽 버튼을 누르면 쉽게 복사할 수 있다.

 

 

1-1. VSCode 내에서 편하게 clone 하는 방법

Explorer → Clone Repository → Clone할 레포지토리 복사 후 붙여넣기 → 로컬 저장소 선택

 

 

1-2. 파일을 저장하고 싶은 위치에 가서

마우스 오른쪽 버튼 → Git Bash 혹은 VS code 클릭 후 terminal 실행

 

(본 포스트에서는 Git Bash로 진행)

 

 

3. 'git clone <복사한 레파지토리 주소>' 코드 실행

  • (주의) 처음 한 번만 실행하는 것 !
  • clone은 복제라는 뜻으로, git clone 명령어를 사용하면 원격 저장소를 복제해서 내 컴퓨터(로컬 저장소)에 옮길 수 있다.
  • git clone을 통해 생성된 로컬 저장소는 git init 과 git remote add가 이미 수행되어 있다.
$ git clone 복제할 레파지토리 주소

Cloning into '레파지토리명'...
remote: Enumerating objects: 55, done.
remote: Counting objects: 100% (55/55), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 55 (delta 22), reused 46 (delta 13), pack-reused 0
Receiving objects: 100% (55/55), 3.56 MiB | 12.11 MiB/s, done.
Resolving deltas: 100% (22/22), done.

 

 

4. clone이 잘 됐는지 폴더 생성 확인

 

5. 'git pull <저장소 이름> <브랜치 이름>' 코드 실행

  • clone해서 새로 생긴 폴더위치에서 코드 실행해야함 !
  • git pull : 원격 저장소의 변경 사항을 가져와서 로컬 저장소를 업데이트 하는 명령어
  • 로컬 저장소와 원격 저장소의 내용이 완전 일치하면 git pull을 해도 변화가 생기지 않는다. 
$ cd Machine_Learning/

$ git pull origin master
From https://github.com/레파지토리명
 * branch            master     -> FETCH_HEAD
Already up to date.

 

 

6. 다시 commit & push

  • clone해온 폴더에서 변경사항이 있고, 그것을 다시 commit & push하고싶을 때
  • 일반적인 방법과 같이 수행하면 된다.
$ git add .
$ git commit -m "변경내용"
$ git push origin master

 

★ 중요 : pull (당겨오기) -> push (업로드), 당겨온 이후에 업로드를 해야함 ! 

 


 

참고 1. 얕은 클론(shallow clone)

일반적으로 git clone 을 실행하면 프로젝트 히스토리를 전부 받아오는데, 모든 히스토리를 가져오지 않고 마지막 리비전의 히스토리만 가져오려면 shallow clone을 하면 된다. 즉 많은 개발자가 프로젝트에 참여하게 되면 깃허브가 무거워질 수 밖에 없는데, 편집했던 이력들을 무시하고 최신 코드만 가져오기 위해 얕은 클론(shallow clone)을 사용할 수 있다. 참고해야할 것은 마지막 리비전만 받아 오는 Shallow Clone을 해야 하는 상황에서는 동시에 브랜치를 여러개 쓸 수 없다는 점이다.

# 원격 저장소로부터 가장 마지막 커밋만을 fetch 
$ git clone --depth 1 레파지토리 주소

# 최근 50 개의 커밋들만 clone
$ git clone --depth 50 레파지토리 주소

 

 

참고 2. (pwd로 작업 디렉토리 확인 필수) 현재 '폴더'에 clone 하고 싶다면? 뒤에 .을 붙이기

$ git clone 복제할 레파지토리 주소 .

 

 


References

https://git-scm.com/book/ko/v2

 

https://yongku.tistory.com/entry/%EA%B9%83%ED%97%88%EB%B8%8CGithub-Git-%ED%81%B4%EB%A1%A0%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

https://choiiis.github.io/git/how-to-clone-project/

 

shallow clone

https://nochoco-lee.tistory.com/200

728x90