저장소
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
리포지터리는 GitLab 프로젝트를 구성하는 요소입니다. 각 리포지터리는 GitLab 프로젝트의 일부이며, GitLab 프로젝트 없이는 존재할 수 없습니다. 다음 시점에 리포지터리에 파일을 추가할 수 있습니다: GitLab UI에서 파일을 추가하거나 업로드하려면:
리포지터리는 GitLab 프로젝트를 구성하는 요소입니다. 리포지터리에 코드를 저장하고, 버전 관리로 그 변경 사항을 추적합니다.
각 리포지터리는 GitLab 프로젝트의 일부이며, GitLab 프로젝트 없이는 존재할 수 없습니다. 프로젝트가 리포지터리의 구성 옵션을 제공합니다.
리포지터리 생성#
리포지터리를 생성하려면:
- 프로젝트를 생성하거나
- 기존 프로젝트를 포크합니다.
리포지터리에 파일 추가#
다음 시점에 리포지터리에 파일을 추가할 수 있습니다:
- 프로젝트를 생성할 때, 또는
- 프로젝트를 생성한 뒤 다음 방법으로:
UI에서 파일 추가#
GitLab UI에서 파일을 추가하거나 업로드하려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 파일을 업로드할 디렉터리로 이동합니다.
- 디렉터리 이름 옆에서 더하기 아이콘(+) > Upload file을 선택합니다.
- 파일을 끌어다 놓거나 업로드합니다.
- 커밋 메시지를 입력합니다.
- 선택 사항. 변경 사항으로 머지 리퀘스트를 생성하려면 Target branch에 리포지터리의 기본 브랜치가 아닌 브랜치 이름을 입력합니다.
- Upload file을 선택합니다.
리포지터리에 변경 사항 커밋#
리포지터리의 브랜치에 변경 사항을 커밋할 수 있습니다. 명령줄을 사용할 때는
git commit을 사용합니다.
커밋으로 소통과 협업을 개선하고, 파이프라인을 트리거하거나 건너뛰고, 변경 사항을 되돌리는 방법은 커밋을 참고합니다.
리포지터리 클론#
다음 방법으로 리포지터리를 클론할 수 있습니다:
- 명령줄:
- GitLab UI:
리포지터리 소스 코드 다운로드#
리포지터리의 소스 코드를 압축 파일로 다운로드하려면:
-
상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
파일 목록 위에서 Code를 선택합니다.
-
옵션에서 다운로드할 파일을 선택합니다:
-
Source code:
현재 보고 있는 브랜치의 소스 코드를 다운로드합니다. 사용 가능한 확장자:
zip,tar,tar.gz,tar.bz2. -
Directory:
특정 디렉터리를 다운로드합니다. 하위 디렉터리를 볼 때만 표시됩니다. 사용 가능한 확장자:
zip,tar,tar.gz,tar.bz2. -
Artifacts:
최신 CI/CD job의 아티팩트를 다운로드합니다.
-
리포지터리 자체가 바뀌지 않아도 생성된 아카이브의 체크섬은 달라질 수 있습니다. 예를 들어 Git 이나 GitLab 이 사용하는 서드파티 라이브러리가 변경되면 이런 일이 발생합니다.
아카이브 체크섬으로 두 다운로드가 같은 리포지터리 콘텐츠를 담고 있는지 확인하지 않습니다. 대신 서명된 커밋과 태그로 콘텐츠를 확인합니다.
Git 리비전별 리포지터리 보기#
커밋 SHA, 브랜치 이름, 태그 같은 특정 Git 리비전에서 리포지터리의 모든 파일과 폴더를 보려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 상단에서 Select Git revision 드롭다운 목록을 엽니다.
- Git 리비전을 선택하거나 검색합니다.
커밋 페이지에서도 특정 Git 리비전의 파일을 보고 탐색할 수 있습니다.
리포지터리 언어#
GitLab은 기본 브랜치에서 사용된 프로그래밍 언어를 탐지합니다. 이 정보는 Project overview 페이지에 표시됩니다.

새 파일이 추가되면 이 정보가 갱신되기까지 최대 5분이 걸릴 수 있습니다.
리포지터리 언어 추가#
모든 파일이 탐지되어 Project overview 페이지에 표시되지는 않습니다. 문서, 벤더 코드, 대부분의 마크업 언어는 제외됩니다. 지원되는 파일과 언어 목록은 지원 데이터 유형을 참고합니다.
이 동작을 바꿔 기본 설정에 파일 유형을 추가하려면:
-
리포지터리의 루트 디렉터리에
.gitattributes라는 파일을 만듭니다. -
특정 파일 유형을 포함하도록 GitLab에 알리는 줄을 추가합니다. 예를 들어
.proto파일을 활성화하려면 다음을 추가합니다:*.proto linguist-detectable=true
이 기능은 CPU를 과도하게 사용할 수 있습니다. 문제가 발생하면 과도한 CPU 사용 문제 해결 섹션을 참고합니다.
리포지터리 기여자 분석#
선택한 프로젝트 브랜치의 시간 경과에 따른 커밋 수 꺾은선 차트와, 프로젝트 구성원별 커밋 수 꺾은선 차트를 볼 수 있습니다. 자세한 내용은 기여자 분석을 참고합니다.
리포지터리 히스토리 그래프#
리포지터리 그래프는 브랜치와 머지를 포함한 리포지터리 네트워크의 시각적 히스토리를 보여 줍니다. 이 그래프로 리포지터리의 변경 흐름을 파악할 수 있습니다.
리포지터리 히스토리 그래프를 보려면 프로젝트의 Code > Repository graph로 이동합니다.

리포지터리 경로 변경#
리포지터리 경로가 바뀌면 GitLab은 리다이렉트로 이전 위치에서 새 위치로의 전환을 처리합니다.
사용자 이름을 변경하거나, 그룹 경로를 변경하거나, 리포지터리 이름을 변경하면:
- 네임스페이스와 그 아래의 프로젝트 등 모든 항목의 URL 이 새 URL로 리다이렉트됩니다.
- 해당 네임스페이스 아래 프로젝트의 Git 원격 URL은 새 원격 URL로 리다이렉트됩니다. 위치가 바뀐 리포지터리에 푸시하거나 풀하면 원격을 갱신하라는 경고 메시지가 표시됩니다. 이름을 변경한 뒤에도 자동화 스크립트나 Git 클라이언트는 계속 동작합니다.
- 리다이렉트는 원래 경로를 다른 그룹, 사용자, 프로젝트가 차지하지 않는 한 유지됩니다.
- API 리다이렉트는 명시적으로 따라가야 할 수 있습니다.
경로를 변경한 뒤에는 다음 리소스의 기존 URL을 갱신해야 합니다:
include:component을 제외한 include 문. 갱신하지 않으면 파이프라인이 구문 오류로 실패합니다. CI/CD 컴포넌트 참조는 리다이렉트를 따라갈 수 있습니다.- 숫자 네임스페이스 ID와 프로젝트 ID 대신 인코딩된 경로를 사용하는 네임스페이스 API 호출.
- Docker 이미지 참조.
- 프로젝트나 네임스페이스를 지정하는 변수.
CODEOWNERS파일.
관련 주제#
문제 해결#
리포지터리 푸시 순서 검색#
커밋이 "사라진" 것처럼 보이면 리포지터리에 대한 푸시 순서를 검색합니다.
이 Stack Overflow 스레드는
force push 없이도 이런 상태에 이를 수 있는 경위를 설명합니다. 다른 원인으로는 git reset 작업에서
HEAD ref를 바꾸는 잘못 구성된 서버 훅이 있습니다.
아래 예제 코드의 출력을 대상 브랜치에 대해 살펴보면, 출력을 따라가는 동안
from/to 커밋에서 불연속이 나타납니다.
새 푸시의 commit_from은 이전 푸시의 commit_to와 같아야 합니다.
그 순서가 끊겼다면 리포지터리 히스토리에서 하나 이상의 커밋이 "유실"되었다는 뜻입니다.
rails 콘솔을 사용하는
다음 예제는 최근 100건의 푸시를 확인하고 commit_from과 commit_to 항목을 출력합니다:
p = Project.find_by_full_path('project/path')
p.events.pushed_action.last(100).each do |e|
printf "%-20.20s %8s...%8s (%s)", e.push_event_payload[:ref], e.push_event_payload[:commit_from], e.push_event_payload[:commit_to], e.author.try(:username)
end ; nil
4번째 줄에서 순서가 끊긴 것을 보여 주는 출력 예시:
master f21b07713251e04575908149bdc8ac1f105aabc3...6bc56c1f46244792222f6c85b11606933af171de root
master 6bc56c1f46244792222f6c85b11606933af171de...132da6064f5d3453d445fd7cb452b148705bdc1b root
master 132da6064f5d3453d445fd7cb452b148705bdc1b...a62e1e693150a2e46ace0ce696cd4a52856dfa65 root
master 58b07b719a4b0039fec810efa52f479ba1b84756...f05321a5b5728bd8a89b7bf530aa44043c951dce root
master f05321a5b5728bd8a89b7bf530aa44043c951dce...7d02e575fd790e76a3284ee435368279a5eb3773 root
오류: Xcode가 리포지터리 클론에 실패합니다#
GitLab은 인가된 SSH 키 목록을 제한하는 옵션을 제공합니다.
SSH 키가 허용 목록에 없으면
The repository rejected the provided credentials 같은 오류가 발생할 수 있습니다.
이 문제를 해결하려면 지원되는 SSH 키 유형 지침을 충족하는 새 SSH 키 쌍을 생성합니다. 지원되는 SSH 키를 생성한 뒤 리포지터리 클론을 다시 시도합니다.