InfoGrab DocsInfoGrab Docs

저장소

요약

리포지터리는 GitLab 프로젝트를 구성하는 요소입니다. 각 리포지터리는 GitLab 프로젝트의 일부이며, GitLab 프로젝트 없이는 존재할 수 없습니다. 다음 시점에 리포지터리에 파일을 추가할 수 있습니다: GitLab UI에서 파일을 추가하거나 업로드하려면:

리포지터리는 GitLab 프로젝트를 구성하는 요소입니다. 리포지터리에 코드를 저장하고, 버전 관리로 그 변경 사항을 추적합니다.

각 리포지터리는 GitLab 프로젝트의 일부이며, GitLab 프로젝트 없이는 존재할 수 없습니다. 프로젝트가 리포지터리의 구성 옵션을 제공합니다.

리포지터리 생성#

리포지터리를 생성하려면:

리포지터리에 파일 추가#

다음 시점에 리포지터리에 파일을 추가할 수 있습니다:

UI에서 파일 추가#

GitLab UI에서 파일을 추가하거나 업로드하려면:

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 파일을 업로드할 디렉터리로 이동합니다.
  3. 디렉터리 이름 옆에서 더하기 아이콘(+) > Upload file을 선택합니다.
  4. 파일을 끌어다 놓거나 업로드합니다.
  5. 커밋 메시지를 입력합니다.
  6. 선택 사항. 변경 사항으로 머지 리퀘스트를 생성하려면 Target branch에 리포지터리의 기본 브랜치가 아닌 브랜치 이름을 입력합니다.
  7. Upload file을 선택합니다.

리포지터리에 변경 사항 커밋#

리포지터리의 브랜치에 변경 사항을 커밋할 수 있습니다. 명령줄을 사용할 때는 git commit을 사용합니다.

커밋으로 소통과 협업을 개선하고, 파이프라인을 트리거하거나 건너뛰고, 변경 사항을 되돌리는 방법은 커밋을 참고합니다.

리포지터리 클론#

다음 방법으로 리포지터리를 클론할 수 있습니다:

리포지터리 소스 코드 다운로드#

리포지터리의 소스 코드를 압축 파일로 다운로드하려면:

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.

  2. 파일 목록 위에서 Code를 선택합니다.

  3. 옵션에서 다운로드할 파일을 선택합니다:

    • Source code:

      현재 보고 있는 브랜치의 소스 코드를 다운로드합니다. 사용 가능한 확장자: zip, tar, tar.gz, tar.bz2.

    • Directory:

      특정 디렉터리를 다운로드합니다. 하위 디렉터리를 볼 때만 표시됩니다. 사용 가능한 확장자: zip, tar, tar.gz, tar.bz2.

    • Artifacts:

      최신 CI/CD job의 아티팩트를 다운로드합니다.

리포지터리 자체가 바뀌지 않아도 생성된 아카이브의 체크섬은 달라질 수 있습니다. 예를 들어 Git 이나 GitLab 이 사용하는 서드파티 라이브러리가 변경되면 이런 일이 발생합니다.

Note

아카이브 체크섬으로 두 다운로드가 같은 리포지터리 콘텐츠를 담고 있는지 확인하지 않습니다. 대신 서명된 커밋과 태그로 콘텐츠를 확인합니다.

Git 리비전별 리포지터리 보기#

커밋 SHA, 브랜치 이름, 태그 같은 특정 Git 리비전에서 리포지터리의 모든 파일과 폴더를 보려면:

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 상단에서 Select Git revision 드롭다운 목록을 엽니다.
  3. Git 리비전을 선택하거나 검색합니다.

커밋 페이지에서도 특정 Git 리비전의 파일을 보고 탐색할 수 있습니다.

리포지터리 언어#

GitLab은 기본 브랜치에서 사용된 프로그래밍 언어를 탐지합니다. 이 정보는 Project overview 페이지에 표시됩니다.

Repository Languages bar

새 파일이 추가되면 이 정보가 갱신되기까지 최대 5분이 걸릴 수 있습니다.

리포지터리 언어 추가#

모든 파일이 탐지되어 Project overview 페이지에 표시되지는 않습니다. 문서, 벤더 코드, 대부분의 마크업 언어는 제외됩니다. 지원되는 파일과 언어 목록은 지원 데이터 유형을 참고합니다.

이 동작을 바꿔 기본 설정에 파일 유형을 추가하려면:

  1. 리포지터리의 루트 디렉터리에 .gitattributes라는 파일을 만듭니다.

  2. 특정 파일 유형을 포함하도록 GitLab에 알리는 줄을 추가합니다. 예를 들어 .proto 파일을 활성화하려면 다음을 추가합니다:

    *.proto linguist-detectable=true
    

이 기능은 CPU를 과도하게 사용할 수 있습니다. 문제가 발생하면 과도한 CPU 사용 문제 해결 섹션을 참고합니다.

리포지터리 기여자 분석#

선택한 프로젝트 브랜치의 시간 경과에 따른 커밋 수 꺾은선 차트와, 프로젝트 구성원별 커밋 수 꺾은선 차트를 볼 수 있습니다. 자세한 내용은 기여자 분석을 참고합니다.

리포지터리 히스토리 그래프#

리포지터리 그래프는 브랜치와 머지를 포함한 리포지터리 네트워크의 시각적 히스토리를 보여 줍니다. 이 그래프로 리포지터리의 변경 흐름을 파악할 수 있습니다.

리포지터리 히스토리 그래프를 보려면 프로젝트의 Code > Repository graph로 이동합니다.

A graph showing the flow of commits in a repository.

리포지터리 경로 변경#

리포지터리 경로가 바뀌면 GitLab은 리다이렉트로 이전 위치에서 새 위치로의 전환을 처리합니다.

사용자 이름을 변경하거나, 그룹 경로를 변경하거나, 리포지터리 이름을 변경하면:

  • 네임스페이스와 그 아래의 프로젝트 등 모든 항목의 URL 이 새 URL로 리다이렉트됩니다.
  • 해당 네임스페이스 아래 프로젝트의 Git 원격 URL은 새 원격 URL로 리다이렉트됩니다. 위치가 바뀐 리포지터리에 푸시하거나 풀하면 원격을 갱신하라는 경고 메시지가 표시됩니다. 이름을 변경한 뒤에도 자동화 스크립트나 Git 클라이언트는 계속 동작합니다.
  • 리다이렉트는 원래 경로를 다른 그룹, 사용자, 프로젝트가 차지하지 않는 한 유지됩니다.
  • API 리다이렉트는 명시적으로 따라가야 할 수 있습니다.

경로를 변경한 뒤에는 다음 리소스의 기존 URL을 갱신해야 합니다:

관련 주제#

문제 해결#

리포지터리 푸시 순서 검색#

커밋이 "사라진" 것처럼 보이면 리포지터리에 대한 푸시 순서를 검색합니다. 이 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 키를 생성한 뒤 리포지터리 클론을 다시 시도합니다.

저장소

GitLab v19.5
Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기

요약

리포지터리는 GitLab 프로젝트를 구성하는 요소입니다. 각 리포지터리는 GitLab 프로젝트의 일부이며, GitLab 프로젝트 없이는 존재할 수 없습니다. 다음 시점에 리포지터리에 파일을 추가할 수 있습니다: GitLab UI에서 파일을 추가하거나 업로드하려면:

리포지터리는 GitLab 프로젝트를 구성하는 요소입니다. 리포지터리에 코드를 저장하고, 버전 관리로 그 변경 사항을 추적합니다.

각 리포지터리는 GitLab 프로젝트의 일부이며, GitLab 프로젝트 없이는 존재할 수 없습니다. 프로젝트가 리포지터리의 구성 옵션을 제공합니다.

리포지터리 생성#

리포지터리를 생성하려면:

리포지터리에 파일 추가#

다음 시점에 리포지터리에 파일을 추가할 수 있습니다:

UI에서 파일 추가#

GitLab UI에서 파일을 추가하거나 업로드하려면:

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 파일을 업로드할 디렉터리로 이동합니다.
  3. 디렉터리 이름 옆에서 더하기 아이콘(+) > Upload file을 선택합니다.
  4. 파일을 끌어다 놓거나 업로드합니다.
  5. 커밋 메시지를 입력합니다.
  6. 선택 사항. 변경 사항으로 머지 리퀘스트를 생성하려면 Target branch에 리포지터리의 기본 브랜치가 아닌 브랜치 이름을 입력합니다.
  7. Upload file을 선택합니다.

리포지터리에 변경 사항 커밋#

리포지터리의 브랜치에 변경 사항을 커밋할 수 있습니다. 명령줄을 사용할 때는 git commit을 사용합니다.

커밋으로 소통과 협업을 개선하고, 파이프라인을 트리거하거나 건너뛰고, 변경 사항을 되돌리는 방법은 커밋을 참고합니다.

리포지터리 클론#

다음 방법으로 리포지터리를 클론할 수 있습니다:

리포지터리 소스 코드 다운로드#

리포지터리의 소스 코드를 압축 파일로 다운로드하려면:

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.

  2. 파일 목록 위에서 Code를 선택합니다.

  3. 옵션에서 다운로드할 파일을 선택합니다:

    • Source code:

      현재 보고 있는 브랜치의 소스 코드를 다운로드합니다. 사용 가능한 확장자: zip, tar, tar.gz, tar.bz2.

    • Directory:

      특정 디렉터리를 다운로드합니다. 하위 디렉터리를 볼 때만 표시됩니다. 사용 가능한 확장자: zip, tar, tar.gz, tar.bz2.

    • Artifacts:

      최신 CI/CD job의 아티팩트를 다운로드합니다.

리포지터리 자체가 바뀌지 않아도 생성된 아카이브의 체크섬은 달라질 수 있습니다. 예를 들어 Git 이나 GitLab 이 사용하는 서드파티 라이브러리가 변경되면 이런 일이 발생합니다.

Note

아카이브 체크섬으로 두 다운로드가 같은 리포지터리 콘텐츠를 담고 있는지 확인하지 않습니다. 대신 서명된 커밋과 태그로 콘텐츠를 확인합니다.

Git 리비전별 리포지터리 보기#

커밋 SHA, 브랜치 이름, 태그 같은 특정 Git 리비전에서 리포지터리의 모든 파일과 폴더를 보려면:

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 상단에서 Select Git revision 드롭다운 목록을 엽니다.
  3. Git 리비전을 선택하거나 검색합니다.

커밋 페이지에서도 특정 Git 리비전의 파일을 보고 탐색할 수 있습니다.

리포지터리 언어#

GitLab은 기본 브랜치에서 사용된 프로그래밍 언어를 탐지합니다. 이 정보는 Project overview 페이지에 표시됩니다.

Repository Languages bar

새 파일이 추가되면 이 정보가 갱신되기까지 최대 5분이 걸릴 수 있습니다.

리포지터리 언어 추가#

모든 파일이 탐지되어 Project overview 페이지에 표시되지는 않습니다. 문서, 벤더 코드, 대부분의 마크업 언어는 제외됩니다. 지원되는 파일과 언어 목록은 지원 데이터 유형을 참고합니다.

이 동작을 바꿔 기본 설정에 파일 유형을 추가하려면:

  1. 리포지터리의 루트 디렉터리에 .gitattributes라는 파일을 만듭니다.

  2. 특정 파일 유형을 포함하도록 GitLab에 알리는 줄을 추가합니다. 예를 들어 .proto 파일을 활성화하려면 다음을 추가합니다:

    *.proto linguist-detectable=true
    

이 기능은 CPU를 과도하게 사용할 수 있습니다. 문제가 발생하면 과도한 CPU 사용 문제 해결 섹션을 참고합니다.

리포지터리 기여자 분석#

선택한 프로젝트 브랜치의 시간 경과에 따른 커밋 수 꺾은선 차트와, 프로젝트 구성원별 커밋 수 꺾은선 차트를 볼 수 있습니다. 자세한 내용은 기여자 분석을 참고합니다.

리포지터리 히스토리 그래프#

리포지터리 그래프는 브랜치와 머지를 포함한 리포지터리 네트워크의 시각적 히스토리를 보여 줍니다. 이 그래프로 리포지터리의 변경 흐름을 파악할 수 있습니다.

리포지터리 히스토리 그래프를 보려면 프로젝트의 Code > Repository graph로 이동합니다.

A graph showing the flow of commits in a repository.

리포지터리 경로 변경#

리포지터리 경로가 바뀌면 GitLab은 리다이렉트로 이전 위치에서 새 위치로의 전환을 처리합니다.

사용자 이름을 변경하거나, 그룹 경로를 변경하거나, 리포지터리 이름을 변경하면:

  • 네임스페이스와 그 아래의 프로젝트 등 모든 항목의 URL 이 새 URL로 리다이렉트됩니다.
  • 해당 네임스페이스 아래 프로젝트의 Git 원격 URL은 새 원격 URL로 리다이렉트됩니다. 위치가 바뀐 리포지터리에 푸시하거나 풀하면 원격을 갱신하라는 경고 메시지가 표시됩니다. 이름을 변경한 뒤에도 자동화 스크립트나 Git 클라이언트는 계속 동작합니다.
  • 리다이렉트는 원래 경로를 다른 그룹, 사용자, 프로젝트가 차지하지 않는 한 유지됩니다.
  • API 리다이렉트는 명시적으로 따라가야 할 수 있습니다.

경로를 변경한 뒤에는 다음 리소스의 기존 URL을 갱신해야 합니다:

관련 주제#

문제 해결#

리포지터리 푸시 순서 검색#

커밋이 "사라진" 것처럼 보이면 리포지터리에 대한 푸시 순서를 검색합니다. 이 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 키를 생성한 뒤 리포지터리 클론을 다시 시도합니다.