- SSH로 복제
- HTTPS로 복제
- Apple Xcode에서 복제하고 열기
- Visual Studio Code에서 복제하고 열기
- IntelliJ IDEA에서 복제하고 열기
- 복제 크기 축소
Git 저장소를 로컬 컴퓨터로 복제합니다
저장소를 복제하면 서버와 연결이 생성되고 원격 저장소의 파일이 컴퓨터로 다운로드됩니다.
이 연결을 위해 자격 증명을 추가해야 합니다. SSH 또는 HTTPS 중에서 선택할 수 있습니다. SSH를 권장합니다.
SSH로 복제
한 번만 인증하려면 SSH로 복제하세요.
- SSH 문서의 안내에 따라 GitLab에서 인증합니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 복제하려는 프로젝트를 찾습니다.
- 프로젝트 개요 페이지에서 오른쪽 상단에 있는 코드를 선택한 후 SSH로 복제하기의 URL을 복사합니다.
- 터미널을 열고 파일을 복제하려는 디렉터리로 이동합니다. Git은 자동으로 저장소 이름으로 폴더를 만들고 파일을 해당 폴더에 다운로드합니다.
-
이 명령을 실행합니다:
git clone <복사한 URL>
-
파일을 보려면 새 디렉터리로 이동합니다:
cd <새 디렉터리>
HTTPS로 복제
컴퓨터와 GitLab 간의 각 작업마다 인증을 하려면 HTTPS로 복제하세요. OAuth 자격 증명 도우미를 설치하면 수동으로 인증해야 하는 횟수를 줄일 수 있어 HTTPS가 원활한 경험을 제공합니다.
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 복제하려는 프로젝트를 찾습니다.
- 프로젝트 개요 페이지에서 오른쪽 상단에 있는 코드를 선택한 후 HTTPS로 복제하기의 URL을 복사합니다.
- 터미널을 열고 파일을 복제하려는 디렉터리로 이동합니다.
-
다음 명령을 실행합니다. Git은 저장소 이름으로 폴더를 만들고 파일을 해당 폴더에 다운로드합니다.
git clone <복사한 URL>
-
GitLab에서 사용자 이름과 비밀번호를 요청합니다.
계정에 2차 인증(2FA)이 활성화되어 있다면 계정 비밀번호를 사용할 수 없습니다. 대신 다음 중 하나를 수행할 수 있습니다:
-
read_repository
또는write_repository
권한을 가진 토큰을 사용하여 복제합니다. - OAuth 자격 증명 도우미를 설치합니다.
2FA를 활성화하지 않았다면 계정 비밀번호를 사용하세요.
-
-
파일을 보려면 새 디렉터리로 이동합니다:
cd <새 디렉터리>
참고:
Windows에서 비밀번호를 여러 번 잘못 입력하고 “액세스 거부” 메시지가 표시되는 경우, 네임스페이스(사용자 이름 또는 그룹)를 경로에 추가합니다: git clone https://namespace@gitlab.com/gitlab-org/gitlab.git
.
토큰을 사용하여 복제하기
HTTPS를 통해 토큰을 사용하여 복제하려면:
- 2차 인증(2FA)을 사용하려면
- 하나 이상의 저장소에 대해 취소할 수 있는 자격 증명을 사용하려면
HTTPS를 통해 복제할 때 다음 토큰 중 하나를 사용할 수 있습니다:
예시:
git clone https://<사용자 이름>:<토큰>@gitlab.example.com/tanuki/awesome_project.git
Apple Xcode에서 복제하고 열기
.xcodeproj
또는 .xcworkspace
디렉터리를 포함하는 프로젝트는 macOS의 Xcode로 복제할 수 있습니다.
- GitLab UI에서 프로젝트 개요 페이지로 이동합니다.
- 오른쪽 상단에서 코드를 선택합니다.
- Xcode를 선택합니다.
프로젝트가 컴퓨터에 복제되고 Xcode를 열도록 안내를 받습니다.
Visual Studio Code에서 복제하고 열기
GitLab 사용자 인터페이스에서 모든 프로젝트는 Visual Studio Code로 복제할 수 있지만 Visual Studio Code용 GitLab Workflow 확장을 설치하여 Visual Studio Code에서 복제할 수도 있습니다.
- GitLab 인터페이스에서:
- 프로젝트 개요 페이지로 이동합니다.
- 오른쪽 상단에서 코드를 선택합니다.
- IDE에서 열기 아래에서 Visual Studio Code (SSH) 또는 Visual Studio Code (HTTPS)를 선택합니다.
- 프로젝트를 복제할 폴더를 선택합니다.
Visual Studio Code가 프로젝트를 복제한 후 해당 폴더를 엽니다.
-
확장이 설치된 Visual Studio Code에서,
확장의
Git: Clone
명령을 사용합니다.
IntelliJ IDEA에서 복제하고 열기
GitLab 사용자 인터페이스에서 모든 프로젝트는 IntelliJ IDEA에서 복제할 수 있습니다.
전제 조건:
- JetBrains Toolbox App도 설치되어 있어야 합니다.
다음을 수행합니다:
- 프로젝트 개요 페이지로 이동합니다.
- 오른쪽 상단에서 코드를 선택합니다.
- IDE에서 열기 아래에서 IntelliJ IDEA (SSH) 또는 IntelliJ IDEA (HTTPS)를 선택합니다.
복제 크기 축소
Git 저장소가 커질수록 다음과 같은 이유로 작업이 불편해질 수 있습니다:
- 다운로드해야 하는 많은 이력.
- 필요로 하는 디스크 공간이 많아진다.
부분 복제는 저장소의 완전한 사본 없이 Git이 작동할 수 있도록 하는 성능 최적화입니다. 이 작업의 목표는 Git이 매우 큰 저장소를 더 잘 다룰 수 있도록 하는 것입니다.
Git 2.22.0 이상이 필요합니다.
파일 크기로 필터링
Git에 대형 바이너리 파일을 저장하는 것은 대개 권장되지 않습니다. 외부에서 느린 또는 불안정한 인터넷 연결에서 작업할 때 특히 문제가 될 수 있는데 그 이유는 매번 클론하거나 변경 사항을 가져올 때마다 모든 큰 파일이 다운로드되기 때문입니다.
파일 크기 필터와 함께 부분 복제를 사용하여 이 문제를 해결할 수 있습니다. Git이 누락된 파일을 필요로할 때 해당 파일을 필요에 따라 다운로드합니다.
저장소를 복제할 때 --filter=blob:limit=<size>
인수를 사용합니다. 예를 들어, 1MB보다 큰 파일을 제외하고 저장소를 복제하려면:
git clone --filter=blob:limit=1m git@gitlab.com:gitlab-com/www-gitlab-com.git
위 명령은 다음과 같은 출력을 생성합니다:
'www-gitlab-com'로 복제 중...
원격 레포지토리 계산 중: 832467/832467개, 완료.
묶음 객체 개수 세는 중: 100% (832467/832467), 완료.
객체 압축 중: 100% (207226/207226), 완료.
총 832467 (delta 585563)개, 재사용 826624 (장바구니 재사용 580099)
수신 중: 100% (832467/832467), 2.34 GiB | 5.05 MiB/s, 완료.
변경 처리 중: 100% (585563/585563), 완료.
원격 레포지토리 계산 중: 146개, 완료.
묶음 객체 개수 세는 중: 100% (146/146), 완료.
객체 압축 중: 100% (138/138), 완료.
총 146 (delta 8)개, 재사용 144 (장바구니 재사용 8)
수신 중: 100% (146/146), 471.45 MiB | 4.60 MiB/s, 완료.
변경 처리 중: (8/8), 완료.
파일 업데이트 중: 100% (13008/13008), 완료.
컨텐츠 필터링 중: 100% (3/3), 131.24 MiB | 4.65 MiB/s, 완료.
Git은 다음과 같은 작업을 수행합니다:
- 1MB를 초과하는 파일을 제외하고 저장소를 복제합니다.
- 기본 브랜치를 확인하기 위해 필요한 경우 누락된 큰 파일을 다운로드합니다.
브랜치를 변경할 때 Git은 누락된 파일을 다운로드할 수 있습니다.
객체 유형별로 필터링
수백만 개의 파일과 오랜 이력이 있는 저장소의 경우, 모든 파일을 제외하고 git sparse-checkout
를 사용하여 작업 사본의 크기를 줄일 수 있습니다.
# 모든 파일을 제외하고 저장소 복제
$ git clone --filter=blob:none --sparse git@gitlab.com:gitlab-com/www-gitlab-com.git
'www-gitlab-com'으로 복제 중...
원격: 객체 열거 중: 678296, 완료.
원격: 객체 개수 세는 중: 100% (678296/678296), 완료.
원격: 객체 압축 중: 100% (165915/165915), 완료.
원격: 총 678296 (델타 472342), 재사용 673292 (델타 467476), 다른 것은 패킹 안 함
객체 받는 중: 100% (678296/678296), 81.06 MiB | 5.74 MiB/s, 완료.
델타 압축 중: 100% (472342/472342), 완료.
원격: 객체 열거 중: 28, 완료.
원격: 객체 개수 세는 중: 100% (28/28), 완료.
원격: 객체 압축 중: 100% (25/25), 완료.
원격: 총 28 (델타 0), 재사용 12 (델타 0), 다른 것은 패킹 안 함
객체 받는 중: 100% (28/28), 140.29 KiB | 341.00 KiB/s, 완료.
파일 업데이트 중: 100% (28/28), 완료.
$ cd www-gitlab-com
$ git sparse-checkout set 데이터 --cone
원격: 객체 열거 중: 301, 완료.
원격: 객체 개수 세는 중: 100% (301/301), 완료.
원격: 객체 압축 중: 100% (292/292), 완료.
원격: 총 301 (델타 16), 재사용 102 (델타 9), 다른 것은 패킹 안 함
객체 받는 중: 100% (301/301), 1.15 MiB | 608.00 KiB/s, 완료.
델타 압축 중: 100% (16/16), 완료.
파일 업데이트 중: 100% (302/302), 완료.
자세한 내용은 sparse-checkout
에 대한 Git 설명서를 확인하세요.
파일 경로별로 필터링
부분 복제와 희소한 체크아웃 간의 긴밀한 통합은 --filter=sparse:oid=<blob-ish>
필터 사양을 통해 가능합니다. 이 필터링 모드는 .gitignore
파일과 유사한 형식을 사용하여 클론 및 가져오기 시 포함할 파일을 지정합니다.
경고:
sparse
필터를 사용하는 부분 복제는 아직 실험 중입니다. 복제 및 가져오기 시 Gitaly 리소스 이용률이 느려질 수 있습니다.
대신 모든 blob을 필터링하고 sparse-checkout
을 사용하세요. git-sparse-checkout
을 사용하면 이러한 종류의 부분 복제 사용 방법을 단순화하고 제한을 극복할 수 있습니다.
자세한 내용은 rev-list-options
에 대한 Git 설명서를 확인하세요.
-
필터 사양 생성. 예를 들어, 루트 디렉토리의 각기 다른 하위 디렉토리에 많은 응용 프로그램이 있는 단일 저장소를 고려해 보세요.
shiny-app/.filterspec
파일을 만드세요.# 파일에서 나열된 경로만 부분 복제를 수행할 때 다운로드됩니다. # `--filter=sparse:oid=shiny-app/.gitfilterspec`를 사용하여 희소한 체크아웃을 구성하는 데 필요한 명시적인 필터 사양을 포함하세요. shiny-app/.gitfilterspec # Shiny 앱 shiny-app/ # 의존성 shimmery-app/ shared-component-a/ shared-component-b/
-
경로별로 복제 및 필터링할 파일 생성.
--filter=sparse:oid
를 지원하는clone
명령어는 희소 체크아웃과 완전히 통합되지 않았습니다.# 서버에 저장된 필터 사양을 사용하여 객체의 필터링된 집합을 복제합니다. 경고: 이 단계는 매우 느릴 수 있습니다! git clone --sparse --filter=sparse:oid=master:shiny-app/.gitfilterspec <url> # 선택 사항: 가져오지 않은 객체를 확인합니다. git rev-list --all --quiet --objects --missing=print | wc -l
경고:
bash
, Zsh 등과 자동으로 Git 상태 정보를 표시하는 편집기와의 Git 통합은 종종git fetch
를 실행합니다. 저장소 전체를 가져오므로 이러한 통합을 사용하지 않거나 다시 구성해야 할 수 있습니다.
부분 복제 필터링 제거
부분 복제 필터링이 적용된 Git 저장소에서 필터링을 제거할 수 있습니다. 필터링을 제거하려면 다음을 수행하세요:
-
필터링으로 제외된 모든 항목을 가져와서 저장소가 완전한 상태임을 확인하세요.
git sparse-checkout
을 사용했다면git sparse-checkout disable
를 사용하여 비활성화하세요. 자세한 내용은disable
설명서를 참조하세요.그런 다음 일반적인
fetch
를 수행하여 저장소가 완전한 상태임을 보장하세요.git sparse-checkout
을 사용하지 않을 때 특히 누락된 객체가 있는지 확인하고 가져오려면 다음 명령어를 사용할 수 있습니다.# 누락된 객체 표시 git rev-list --objects --all --missing=print | grep -e '^\?' # '?' 문자가 아닌 누락된 객체 표시 (GNU grep 필요) git rev-list --objects --all --missing=print | grep -oP '^\?\K\w+' # 누락된 객체 가져오기 git fetch origin $(git rev-list --objects --all --missing=print | grep -oP '^\?\K\w+') # 누락된 객체 수 표시 git rev-list --objects --all --missing=print | grep -e '^\?' | wc -l
- 모든 것 다시 패킹. 예를 들어
git repack -a -d
를 사용하여 수행할 수 있습니다. 이 작업을 통해.git/objects/pack/
에 세 개의 파일만 남아야 합니다.-
pack-<SHA1>.pack
파일 - 해당
pack-<SHA1>.idx
파일 -
pack-<SHA1>.promisor
파일
-
-
.promisor
파일 삭제. 위 단계를 거치면 비어 있고 삭제해야 하는 하나의pack-<SHA1>.promisor
파일만 남아야 합니다. - 부분 복제 구성 삭제. Git 구성 파일에서 부분 복제 관련 구성 변수를 제거해야 합니다. 일반적으로 다음 구성만 제거하면 됩니다.
remote.origin.promisor
remote.origin.partialclonefilter