스니펫
GitLab v19.5Offering: GitLab Self-Managed, GitLab Dedicated
요약
GitLab 스니펫으로 코드와 텍스트 조각을 저장하고 다른 사용자와 공유할 수 있습니다. 스니펫은 다음 방법으로 만들고 관리합니다. GitLab은 두 가지 유형의 스니펫을 제공합니다. GitLab.com에서는 그룹 Owner가 엔터프라이즈 사용자의 개인 스니펫 생성을 제한할 수 있습니다.
GitLab 스니펫으로 코드와 텍스트 조각을 저장하고 다른 사용자와 공유할 수 있습니다. 스니펫에는 댓글을 달고, 복제하고, 버전 관리를 사용할 수 있습니다. 스니펫은 여러 파일을 담을 수 있습니다. 또한 구문 강조, 임베딩, 다운로드를 지원하며, 스니펫 API로 스니펫을 관리할 수 있습니다.
스니펫은 다음 방법으로 만들고 관리합니다.
- GitLab 사용자 인터페이스.
- GitLab for VS Code 확장.
glabCLI.

GitLab은 두 가지 유형의 스니펫을 제공합니다.
- 개인 스니펫: 어떤 프로젝트에도 속하지 않습니다. 공개 범위를 public 또는 private로 설정할 수 있습니다.
- 프로젝트 스니펫: 특정 프로젝트에 연결됩니다. 공개 범위를 public으로 하거나 프로젝트 멤버에게만 보이도록 설정할 수 있습니다.
GitLab.com에서는 그룹 Owner가 엔터프라이즈 사용자의 개인 스니펫 생성을 제한할 수 있습니다.
스니펫 공개 범위#
프로젝트 스니펫의 경우 프로젝트의 공개 범위가 항상 스니펫의 공개 범위 설정보다 우선합니다. public으로 표시된 스니펫이라도 프로젝트에 접근할 수 없는 사람은 접근할 수 없습니다.
| 프로젝트 공개 범위 | public 스니펫에 접근 가능한 사람 | private 스니펫에 접근 가능한 사람 |
|---|---|---|
| Private | 프로젝트 멤버만 | 프로젝트 멤버만 |
| Internal | 인증된 사용자(외부 사용자 제외) | 프로젝트 멤버만 |
| Public | 모든 사람 | 프로젝트 멤버만 |
GitLab.com에서는 새 프로젝트, 그룹, 스니펫에 대해 Internal 공개 범위 설정이
비활성화되어 있습니다. Internal 공개 범위를 사용 중인 기존 스니펫은 이 설정을 유지합니다.
자세한 내용은 이슈 12388을 참고합니다.
개인 스니펫의 경우 스니펫의 공개 범위 설정이 접근 권한을 직접 결정합니다.
- Public: 누구나 인증 없이 스니펫에 접근할 수 있습니다.
- Private: 본인만 스니펫에 접근할 수 있습니다.
스니펫 만들기#
개인 스니펫과 프로젝트 스니펫 중 무엇을 만드는지에 따라 여러 방법으로 스니펫을 만들 수 있습니다.
- 만들려는 스니펫 종류를 선택합니다.
- 개인 스니펫을 만들려면 다음 중 하나를 수행합니다.
- 스니펫 대시보드에서 New snippet을 선택합니다.
- 프로젝트에서: 왼쪽 사이드바에서 Create new (+)를 선택합니다. In GitLab 아래에서 New snippet을 선택합니다.
- 그 밖의 페이지에서: 오른쪽 위에서 Create new (+)를 선택한 다음 New snippet을 선택합니다.
glabCLI에서glab snippet create명령을 사용합니다. 전체 사용법은 해당 명령 문서를 참고합니다.- GitLab for VS Code 확장을 설치했다면
Gitlab: Create snippet명령을 사용합니다.
- 프로젝트 스니펫을 만들려면: 프로젝트 페이지로 이동합니다. Create new (+)를 선택합니다. In this project 아래에서 New snippet을 선택합니다.
- 개인 스니펫을 만들려면 다음 중 하나를 수행합니다.
- Title에 제목을 입력합니다.
- 선택 사항. Description에 스니펫 설명을 입력합니다.
- Files에서
example.rb나index.html처럼 파일에 적절한 이름과 확장자를 지정합니다. 적절한 확장자를 가진 파일 이름은 구문 강조가 적용됩니다. 파일 이름을 추가하지 않으면 알려진 복사·붙여넣기 버그가 발생할 수 있습니다. 파일 이름을 지정하지 않으면 GitLab 이 이름을 대신 만들어 줍니다. - 선택 사항. 스니펫에 여러 파일을 추가합니다.
- 공개 범위를 선택하고 Create snippet을 선택합니다.
프로젝트 스니펫의 경우 프로젝트의 공개 범위가 바깥 경계 역할을 합니다. 자세한 내용은 스니펫 공개 범위를 참고합니다.
스니펫을 만든 뒤에도 파일을 더 추가할 수 있습니다. 스니펫은 기본적으로 버전이 관리됩니다.
스니펫 찾기#
GitLab에서 볼 수 있는 모든 스니펫을 찾는 방법은 다음과 같습니다.
-
프로젝트의 스니펫 보기:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Code > Snippets를 선택합니다.
-
본인이 만든 모든 스니펫 보기:
- 상단 바에서 Search or go to를 선택합니다.
- Your work를 선택합니다.
- Snippets를 선택합니다.
GitLab.com에서는 스니펫 페이지로 바로 이동할 수도 있습니다.
-
모든 public 스니펫 살펴보기:
- 상단 바에서 Search or go to를 선택합니다.
- Explore를 선택합니다.
- Snippets를 선택합니다.
GitLab.com에서는 모든 public 스니펫으로 바로 이동할 수도 있습니다.
스니펫의 기본 공개 범위 변경#
프로젝트 스니펫은 기본적으로 활성화되어 있습니다. 기본 공개 범위를 변경하려면 다음 절차를 수행합니다.
- 프로젝트에서 Settings > General로 이동합니다.
- Visibility, project features, permissions 섹션을 확장하고 Snippets로 스크롤합니다.
- 기본 공개 범위를 전환해, 스니펫을 모든 사람이 볼 수 있는지 아니면 프로젝트 멤버만 볼 수 있는지 선택합니다.
- Save changes를 선택합니다.
버전이 지정된 스니펫#
개인 스니펫과 프로젝트 스니펫 모두 기본적으로 버전 관리를 사용합니다.
즉, 모든 스니펫은 생성 시점에 기본 브랜치로 초기화된 자체 리포지터리를 갖습니다. 스니펫 변경 사항을 저장할 때마다 기본 브랜치에 새 커밋이 기록됩니다. 커밋 메시지는 자동으로 생성됩니다. 스니펫 리포지터리에는 브랜치가 하나뿐입니다. 이 브랜치는 삭제할 수 없고 다른 브랜치도 만들 수 없습니다.
파일 이름#
스니펫은 지정된 파일 이름과 확장자를 기준으로 구문 강조를 지원합니다. 파일 이름과 확장자 없이 스니펫을 제출할 수는 있지만, 리포지터리에 파일로 콘텐츠를 만들려면 유효한 이름이 필요합니다.
스니펫에 파일 이름과 확장자를 지정하지 않으면
GitLab 이 snippetfile<x>.txt 형식으로 파일 이름을 추가합니다.
여기서 <x>는 파일에 붙는 번호이며 1부터 시작합니다. 이
번호는 이름 없는 스니펫을 추가할 때마다 증가합니다.
이전 GitLab 버전에서 13.0으로 업그레이드하면 지원되지 않는 파일 이름을 가진
기존 스니펫의 이름이 호환 가능한 형식으로 변경됩니다. 예를 들어
스니펫의 파일 이름이 http://a-weird-filename.me 이면 스니펫 리포지터리에 포함될 수 있도록
http-a-weird-filename-me로 변경됩니다. 스니펫은 ID로 저장되므로
파일 이름이 바뀌면 스니펫에 대한 직접 링크나 임베드 링크가
끊어집니다.
Markdown 파일 미리 보기#
히스토리
- GitLab 19.4에서 도입되었습니다.
스니펫을 만들거나 편집할 때 Markdown 파일의 실시간 미리 보기를 확인할 수 있습니다.
스니펫에서 Markdown 파일을 미리 보려면 다음 절차를 수행합니다.
- 스니펫을 만들거나, 기존 스니펫으로 이동해 Edit를 선택합니다.
- 파일에
example.md처럼 Markdown 파일 이름을 지정합니다. - 파일 편집기에서 마우스 오른쪽 버튼을 클릭하고 Preview Markdown을 선택합니다.
미리 보기는 콘텐츠 옆에 표시되며 입력하는 대로 갱신됩니다. 미리 보기를 닫으려면 편집기에서 마우스 오른쪽 버튼을 클릭하고 Hide Live Preview를 선택합니다.
여러 파일 추가 또는 제거#
스니펫 하나에는 파일을 최대 10 개까지 담을 수 있어, 다음과 같이 관련 파일을 함께 관리할 수 있습니다.
- 스크립트와 그 출력을 함께 담은 스니펫.
- HTML, CSS, JavaScript 코드를 함께 담은 스니펫.
docker-compose.yml파일과 연결된.env파일을 담은 스니펫.- 프로젝트를 초기 구성하고 의존성을 관리하는 데 함께 사용하는
gulpfile.js파일과package.json파일.
스니펫에 파일이 10 개보다 많이 필요하다면 대신 위키를 만듭니다. 위키는 모든 구독 등급의 프로젝트에서 사용할 수 있고, GitLab Premium에서는 그룹에서도 사용할 수 있습니다.
파일이 여러 개인 스니펫은 스니펫 목록에 파일 수가 표시됩니다.

스니펫은 Git 리포지터리로 버전이 관리되므로 Git으로 관리할 수 있고, 스니펫 API와 GitLab UI 로도 관리할 수 있습니다.
GitLab UI에서 스니펫에 새 파일을 추가하려면 다음 절차를 수행합니다.
- GitLab UI에서 해당 스니펫으로 이동합니다.
- 오른쪽 위에서 Edit를 선택합니다.
- Add another file을 선택합니다.
- 제공된 입력 필드에 파일 콘텐츠를 입력합니다.
- Save changes를 선택합니다.
GitLab UI에서 스니펫의 파일을 삭제하려면 다음 절차를 수행합니다.
- GitLab UI에서 해당 스니펫으로 이동합니다.
- 오른쪽 위에서 Edit를 선택합니다.
- 삭제하려는 각 파일의 파일 이름 옆에서 Delete file을 선택합니다.
- Save changes를 선택합니다.
스니펫 복제#
업데이트를 계속 받으려면 스니펫을 로컬에 복사하지 말고 복제합니다. 복제하면 스니펫과 리포지터리의 연결이 유지됩니다.
스니펫을 복제하려면 다음 절차를 수행합니다.
- Clone을 선택한 다음 SSH 또는 HTTPS로 복제할 URL을 복사합니다.
복제한 스니펫에 변경 사항을 커밋하고 GitLab에 푸시할 수 있습니다.
스니펫 임베딩#
public 스니펫은 어떤 웹사이트에든 공유하고 임베드할 수 있습니다. GitLab 스니펫 하나를 여러 곳에서 재사용할 수 있으며, 원본이 변경되면 임베드된 스니펫에도 반영됩니다. 임베드된 스니펫은 사용자가 다운로드하거나 원본 형식으로 볼 수 있습니다.
스니펫을 임베드하려면 다음 절차를 수행합니다.
-
스니펫이 공개 상태인지 확인합니다.
- 프로젝트 스니펫의 경우:
- 프로젝트와 스니펫이 모두 public 이어야 합니다. private 또는 internal 프로젝트의 public 스니펫은 임베드할 수 없습니다.
- 프로젝트에서 Settings > General로 이동합니다. Visibility, project features, permissions 섹션을 확장하고 Snippets로 스크롤합니다. 스니펫 권한을 Everyone with access로 설정합니다.
- 개인 스니펫의 경우:
- 해당 스니펫으로 이동합니다.
- Edit를 선택합니다.
- 공개 범위를 Public으로 설정하고 Save changes를 선택합니다.
- 프로젝트 스니펫의 경우:
-
스니펫의 Embed 섹션에서 Copy를 선택해, 웹사이트나 블로그 글에 추가할 수 있는 한 줄짜리 스크립트를 복사합니다. 예를 들면 다음과 같습니다.
<script src="https://gitlab.com/namespace/project/snippets/SNIPPET_ID.js"></script> -
이 스크립트를 파일에 추가합니다.
임베드된 스니펫에는 다음 내용을 보여 주는 헤더가 표시됩니다.
- 파일 이름(지정한 경우).
- 스니펫 크기.
- GitLab 링크.
- 스니펫 콘텐츠 본문.
예를 들면 다음과 같습니다.
스니펫 다운로드#
스니펫의 원본 콘텐츠를 다운로드할 수 있습니다. 기본적으로 Linux 방식 줄 끝 문자(LF)로 다운로드됩니다.
원래 줄 끝 문자를 유지하려면 line_ending=raw 파라미터를 추가해야 합니다
(예: https://gitlab.com/snippets/SNIPPET_ID/raw?line_ending=raw). GitLab 웹 인터페이스로
만든 스니펫이라면 원래 줄 끝 문자는 Windows 방식(CRLF)입니다.
스니펫에 댓글 달기#
스니펫에서는 해당 코드에 대해 대화를 나눌 수 있어, 사용자 간 협업을 촉진합니다.
스니펫을 스팸으로 표시#
GitLab Self-Managed의 관리자는 스니펫을 스팸으로 표시할 수 있습니다.
사전 요구 사항:
- 인스턴스의 관리자여야 합니다.
- 인스턴스에서 Akismet 스팸 방지 기능이 활성화되어 있어야 합니다.
이 작업을 수행하려면 다음 절차를 수행합니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Code > Snippets를 선택합니다.
- 스팸으로 신고할 스니펫을 선택합니다.
- Submit as spam을 선택합니다.
GitLab 이 해당 스팸을 Akismet으로 전달합니다.
문제 해결#
스니펫 제한#
- 만들 수 있는 스니펫 수에는 제한이 없습니다.
- 브랜치 생성이나 삭제는 지원되지 않습니다. 기본 브랜치만 사용됩니다.
- 스니펫 리포지터리에서는 Git 태그가 지원되지 않습니다.
- 스니펫 리포지터리는 파일 10 개로 제한됩니다. 10 개를 넘겨 푸시하면 오류가 발생합니다.
- 리비전은 GitLab UI에서 사용자에게 표시되지 않으며, 이슈 39271에서 개선을 제안하고 있습니다.
- 스니펫의 기본 최대 크기는 현재(2024-04-17 기준) 50 MB 입니다.
- Git LFS는 지원되지 않습니다.
스니펫 리포지터리 크기 줄이기#
버전이 지정된 스니펫은 네임스페이스 스토리지 크기에 포함되므로, 스니펫 리포지터리는 가능한 한 작게 유지하는 것이 좋습니다.
리포지터리를 축소하는 도구에 대한 자세한 내용은 리포지터리 크기 줄이기 문서를 참고합니다.
스니펫 텍스트 상자에 텍스트를 입력할 수 없음#
파일 이름 필드 아래의 텍스트 영역이 비활성화되어 새 스니펫을 만들 수 없다면 다음 우회 방법을 사용합니다.
- 스니펫 제목을 입력합니다.
- Files 필드 맨 아래로 스크롤한 다음 Add another file을 선택합니다. 두 번째 파일을 추가할 입력 필드가 표시됩니다.
- 두 번째 파일의 파일 이름 필드에 이슈 22870을 피하기 위한 파일 이름을 입력합니다.
- 두 번째 파일의 텍스트 영역에 아무 문자열이나 입력합니다.
- 첫 번째 파일 이름으로 다시 스크롤한 다음 Delete file을 선택합니다.
- 나머지 파일 내용을 작성하고, 완료되면 Create snippet을 선택합니다.
관련 주제#
- GitLab Self-Managed에서 스니펫 설정 구성