원격 저장소에 있는 내용들을
로컬 저장소에 어떻게 가져올까?
등록된 원격 저장소에서 변경된 코드를 로컬 저장소로 가져와서 적용하기
보통 하나의 원격 저장소를 여러 사람들이 같이 사용(협업)하는 경우에 이용한다.
이미 등록된 원격 저장소에서 누군가 해당 원격 저장소에 업로드를 하여
로컬 저장소로 변경 사항을 가져와서 적용시켜줄 때 사용하는 명령어로
fetch와 pull이 있다.
fetch
원격 저장소의 최신 커밋을 로컬 저장소로 가져오기만 하는 것으로
해당 커밋을 가져올 때 가상의 브랜치를 만들어서 해당 브랜치에 가져와서 저장한다.
git fetch (원격 저장소 이름) (원격 저장소 브랜치 이름)
git fetch origin main
해당 원격 저장소에서 해당 브랜치가 최신 커밋된 상황이라면 로컬 저장소로 가져오고
변경 사항이 없다면 가져오지 않는다.
git fetch (원격 저장소 이름)
git fetch origin
브랜치 이름을 작성하지 않으면 해당 원격 저장소에 있는 최신 커밋된 모든 브랜치를 가져온다.
git fetch
만약 등록된 원격 저장소 이름이 origin이라면 원격 저장소 이름을 생략하고 바로 작성해도 된다.
git checkout (원격 저장소 이름)/(원격 저장소 브랜치 이름)
git checkout origin/main
fetch로 가져온 다음 해당 내용을 확인하기 위한 코드이다.
(실행도 가능하다.)
pull
원격 저장소의 최신 커밋을 로컬 저장소로 가져와서 해당 브랜치와 merge 또는 rebase까지 한다.
병합 방법을 명시해주지 않으면 기본 값으로 merge를 수행하고 rebase로 병합을 하고 싶다면 pull 다음에 --rebase를 붙여주면 된다.
만약 merge도 명시해주고 싶다면 pull 다음에 --no-rebase를 붙여주면 된다.
즉 fetch를 먼저 수행한 뒤에 merge 또는 rebase로 병합하는 것과 동일하다.
git pull [--rebase] (원격 저장소 이름) (원격 저장소 브랜치 이름)
git pull origin main
git pull --rebase origin main
해당 원격 저장소에서 해당 브랜치의 최신 커밋이 있다면 가져온 다음
현재 로컬 저장소의 브랜치와 병합한다.
git pull [--rebase] (원격 저장소 이름)
git pull origin
원격 저장소의 브랜치 이름을 생략하면 로컬 저장소의 현재 브랜치와 연결되어 있는 원격 저장소의 브랜치의 최신 커밋 내용을 가져오게 된다.
즉 원격 저장소 브랜치 이름을 생략하면 자신과 연결된 브랜치에서 가져온다.
git pull [--rebase]
이 또한 둘다 생략하면 기본적으로 세팅된 origin이라는 원격 저장소에서 자신과 연결된 브랜치의 최신 커밋을 가져와서 현재 브랜치와 병합하게 된다.
등록하지 않은 GitHub(원격 저장소)에서 프로젝트 다운 받기
등록하지 않은 원격 저장소에 있는 프로젝트를 다운 받아 가져오는 방법은 2가지로
직접 zip압축 파일로 다운로드하는 것과
clone 명령어를 사용해서 다운로드하는 방법이 있다.
--
zip파일로 다운로드하기
zip파일로 다운로드하면 해당 원격 저장소와는 상관없이 동일한 내용으로 된 새로운 프로젝트가 된다.
다운로드할 원격 저장소(GitHub의 repository)로 이동해서
우측 상단에 <>Code를 눌러 Download ZIP을 누르면 된다.
clone 명령어로 다운로드하기 (복제하기)
clone 명령어로 다운을 받게 되면 해당 저장소 전체를 복제해서 가져오는 것으로 모든 커밋 내역, 브랜치, 태그, 변경 내용 등 버전 관리 기록을 모두 가져오게 된다.
그리고 자동으로 해당 원격 저장소와 연결이 된 상태가 되기 때문에 해당 원격 저장소를 사용하던 로컬 저장소와 같은 환경이 되는 것이다.
예시로
데스크톱으로 하던 프로젝트를 clone을 이용해서 노트북에서 해당 프로젝트를 가져온 다음 기존 데스크톱에서 하던 대로 똑같이 사용할 수 있다.
git clone (원격 저장소 주소) [복제할 위치]
사용하는 IDE에서 파일을 만들고 Git 터미널에 코드를 작성하면
해당 원격 저장소의 프로젝트를 현재 로컬 저장소로 가져오게 된다.
복제할 위치는 로컬 저장소에 복제할 위치를 작성하는데 생략이 가능하고 보통 생략을 한다.
zip파일과 clone명령어의 차이점
zip파일로 다운로드한 경우 현재 상태의 내용을 압축해서 가져오므로 버전 관리 기록이 전혀 없이 그냥 같은 코드가 적힌 프로젝트 파일인 반면
clone으로 가져오게 되면 해당 저장소 전체를 복제해서 가져오는 것으로 버전 관리 기록을 모두 가져오게 된다.
+ 원격 저장소에 있는 브랜치를 로컬로 받아오기
로컬 저장소에는 없고 원격 저장소에만 있는 브랜치를 가져오는 명령어
git switch -t (원격 저장소 이름)/(원격 저장소 브랜치 이름)
git switch -t origin/develop
원격 저장소(origin)에 있는 브랜치(develop)를 로컬 저장소로 복사한 다음
가져온 브랜치와 원격에서 가져온 브랜치와 기본 연결까지 설정이 된다.
참고 및 출처
'Git & GitHub' 카테고리의 다른 글
Git의 다양한 옵션 설정하기 (config) (0) | 2024.01.13 |
---|---|
branch의 이전 내역 시점으로 되돌리기 (+ HEAD) (0) | 2024.01.12 |
로컬 저장소와 GitHub 원격 저장소 연결 및 업로드하기 (0) | 2024.01.10 |
Vi모드에서 자주 사용하는 명령어 (0) | 2024.01.10 |
branch 두 개를 하나로 합치기 (merge, rebase) (0) | 2023.12.18 |