- 저장소 생성
- 저장소에 파일 추가
- 저장소에 변경 사항 커밋하기
- 저장소 복제하기
- 저장소 소스 코드 다운로드
- 저장소 언어
- 저장소 기여자 분석
- 저장소 역사 그래프
- 저장소 경로 변경
- 관련 주제
- 문제 해결
저장소
저장소
는 코드를 저장하고, 변경 사항을 만들고, 버전 관리를 사용하여 변경 사항을 추적하는 장소입니다.
각 프로젝트에는 저장소가 포함되어 있으며, 저장소는 프로젝트 없이는 존재할 수 없습니다.
저장소 생성
저장소를 생성하려면:
저장소에 파일 추가
저장소에 파일을 추가할 수 있습니다:
- 프로젝트를 생성할 때, 또는
- 프로젝트를 생성한 후, 다음 옵션을 사용하여:
UI에서 파일 추가하기
GitLab UI에서 파일을 추가하거나 업로드하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 파일을 업로드할 디렉토리로 이동합니다.
- 디렉토리 이름 옆의 더하기 아이콘 ()을 선택한 후 파일 업로드를 선택합니다.
- 파일을 드래그하거나 업로드합니다.
- 커밋 메시지를 입력합니다.
- 선택 사항. 변경 사항으로 병합 요청을 생성하려면 대상 브랜치에
저장소의 기본 브랜치가 아닌 브랜치 이름을 입력합니다. - 파일 업로드를 선택합니다.
저장소에 변경 사항 커밋하기
변경 사항을 저장소의 브랜치에 커밋할 수 있습니다. 명령줄을 사용할 때는,
git commit
을 사용합니다.
커밋을 사용하여 커뮤니케이션 및 협업을 향상하는 방법,
파이프라인을 트리거하거나 건너 뛰기, 변경 사항 되돌리기 등에 대한 정보는
커밋을 참조하세요.
저장소 복제하기
다음 방법으로 저장소를 복제할 수 있습니다:
- 명령줄:
- GitLab UI:
저장소 소스 코드 다운로드
저장소의 소스 코드를 다운로드하면 압축되어 아카이브 파일로 저장됩니다.
저장소에 저장된 소스 코드를 다운로드하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 파일 목록 위에서 코드를 선택합니다.
-
다운로드할 파일을 선택합니다:
-
소스 코드:
현재 보고 있는 브랜치의 소스 코드를 다운로드합니다.
사용 가능한 확장자:zip
,tar
,tar.gz
, 및tar.bz2
. -
디렉토리:
특정 디렉토리를 다운로드합니다. 서브디렉토리를 볼 때만 표시됩니다.
사용 가능한 확장자:zip
,tar
,tar.gz
, 및tar.bz2
. -
아티팩트:
최신 CI/CD 작업에서 아티팩트를 다운로드합니다.
-
생성된 아카이브의 체크섬은 저장소 자체가 변경되지 않더라도 변경될 수 있습니다.
예를 들어, Git 또는 GitLab이 사용하는 타사 라이브러리가 변경될 경우 이러한 일이 발생합니다.
저장소 언어
GitLab은 기본 브랜치에서 사용된 프로그래밍 언어를 감지합니다.
이 정보는 프로젝트 개요 페이지에 표시됩니다.
새 파일이 추가될 때, 이 정보는 최대 5분까지 업데이트되는 데 시간이 걸릴 수 있습니다.
저장소 언어 추가
모든 파일이 감지되어 프로젝트 개요 페이지에 나열되지 않습니다. 문서, 벤더 코드 및 대부분의 마크업 언어는 제외됩니다.
지원되는 파일 및 언어 목록을 보려면 지원되는 데이터 유형을 참조하세요.
이 동작을 변경하고 기본 설정에 추가 파일 유형을 포함하려면:
- 저장소의 루트 디렉토리에서
.gitattributes
라는 파일을 만듭니다. -
GitLab에 특정 파일 유형을 포함하라고 알려주는 줄을 추가합니다. 예를 들어,
.proto
파일을 활성화하려면 다음 내용을 추가하세요:*.proto linguist-detectable=true
이 기능은 CPU를 과도하게 사용할 수 있습니다. 문제가 발생하는 경우, 저장소 언어: 과도한 CPU 사용 문제 해결 섹션을 참조하세요.
저장소 기여자 분석
선택한 프로젝트 브랜치에 대한 커밋 수의 추세선을 포함한 차트를 볼 수 있으며, 각 프로젝트 구성원별로 커밋 수의 추세선 차트를 볼 수 있습니다.
자세한 내용은 기여자 분석을 참조하세요.
저장소 역사 그래프
저장소 그래프는 브랜치 및 병합을 포함한 저장소 네트워크의 시각적 역사를 표시합니다.
이 그래프는 저장소에서 사용된 Git 흐름 전략을 시각화하는 데 도움이 됩니다.
저장소 역사 그래프를 보려면 프로젝트의 코드 > 저장소 그래프로 이동하세요.
저장소 경로 변경
저장소 경로가 변경되면 GitLab은 옛 위치에서 새 위치로의 전환을 리디렉션으로 처리합니다.
사용자 이름 변경, 그룹 경로 변경 또는 저장소 이름 변경을 수행할 때:
- 네임스페이스와 그 하위에 있는 프로젝트와 같은 모든 URL은 새로운 URL로 리디렉션됩니다.
- 네임스페이스 아래의 프로젝트에 대한 Git 원격 URL은 새로운 원격 URL로 리디렉션됩니다. 위치가 변경된 저장소에 푸시하거나 풀할 때 원격을 업데이트하라는 경고 메시지가 표시됩니다. 이름 변경 후 자동화 스크립트나 Git 클라이언트는 계속 작동합니다.
- 리디렉션은 원래 경로가 다른 그룹, 사용자 또는 프로젝트에 의해 차지되지 않는 한 지속됩니다.
- API 리디렉션은 명시적으로 따라야 할 수 있습니다.
경로를 변경한 후에는 다음 리소스에서 기존 URL를 업데이트해야 합니다:
-
include:component
을 제외한 포함 문, 그렇지 않으면 파이프라인이 구문 오류로 실패합니다. CI/CD 구성 요소 참조는 리디렉션을 따를 수 있습니다. - 인코딩된 경로를 사용하는 네임스페이스가 지정된 API 호출 대신에 숫자 네임스페이스 및 프로젝트 ID 사용.
- 도커 이미지 참조.
- 프로젝트 또는 네임스페이스를 지정하는 변수.
관련 주제
문제 해결
리포지토리에 대한 푸시 순서 검색
커밋이 “누락”된 것처럼 보인다면, 리포지토리에 대한 푸시 순서를 검색하세요.
이 StackOverflow 기사에서는 강제 푸시 없이 이러한 상태에 도달할 수 있는 방법을 설명합니다.
또 다른 원인은 git reset
작업에서 HEAD 참조를 변경하는 잘못 구성된 서버 훅일 수 있습니다.
샘플 코드의 출력에서 목표 브랜치를 보면, 출력 경과에 따라 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 키가 허용 목록에 없다면, 제공된 자격 증명이 리포지토리에 의해 거부되었습니다
와 같은 오류가 발생할 수 있습니다.
이 문제를 해결하려면, 지원되는 SSH 키 유형에 대한 가이드라인을 준수하는 새 SSH 키 쌍을 생성하세요.
지원되는 SSH 키를 생성한 후, 리포지토리를 다시 복제해 보세요.