Push 옵션

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

브랜치에 변경사항을 push할 때 클라이언트 측 Git push 옵션을 사용할 수 있습니다. Git 2.10 이상에서는 Git push 옵션을 사용하여 다음을 수행할 수 있습니다:

Git 2.18 이상에서는 긴 형식 (--push-option) 또는 짧은 형식 -o을 모두 사용할 수 있습니다:

git push -o <push_option>

Git 2.10에서 2.17까지는 반드시 긴 형식을 사용해야 합니다:

git push --push-option=<push_option>

서버 측 제어 및 모범 사례의 강제 적용을 위해서는 push 규칙서버 후크을 참조하십시오.

GitLab CI/CD의 Push 옵션

Push 옵션을 사용하여 CI/CD 파이프라인을 건너뛰거나 CI/CD 변수를 전달할 수 있습니다.

참고: Push 옵션은 병합 요청 파이프라인에서는 사용할 수 없습니다. 자세한 정보는 이슈 373212를 참조하십시오.

Push 옵션 설명 예시
ci.skip 최신 push에 대한 CI/CD 파이프라인을 생성하지 않습니다. 브랜치 파이프라인만 건너뛰며 병합 요청 파이프라인은 건너뛰지 않습니다. 이는 Jenkins와 같은 CI/CD 통합을 건너뛰지 않습니다. git push -o ci.skip
ci.variable="<name>=<value>" CI/CD 변수를 CI/CD 파이프라인에 전달합니다. push로 인해 생성된 경우 브랜치 파이프라인에만 전달되며 병합 요청 파이프라인에는 전달되지 않습니다. git push -o ci.variable="MAX_RETRIES=10" -o ci.variable="MAX_TIME=600"
integrations.skip_ci Atlassian Bamboo, Buildkite, Drone, Jenkins, JetBrains TeamCity와 같은 CI/CD 통합을 위한 push 이벤트를 건너뜁니다. GitLab 16.2에서 소개되었습니다. git push -o integrations.skip_ci

병합 요청의 Push 옵션

Git push 옵션을 사용하여 변경 사항을 push하는 동안 병합 요청에 대한 작업을 수행할 수 있습니다:

Push 옵션 설명
merge_request.create push된 브랜치에 대한 새로운 병합 요청을 생성합니다.
merge_request.target=<branch_name> 병합 요청의 대상을 특정 브랜치로 설정합니다. 예: git push -o merge_request.target=branch_name
merge_request.target_project=<project> 병합 요청의 대상을 특정 상류 프로젝트로 설정합니다. 예: git push -o merge_request.target_project=path/to/project. GitLab 16.6에서 소개되었습니다.
merge_request.merge_when_pipeline_succeeds 파이프라인이 성공하면 병합 요청을 병합으로 설정합니다.
merge_request.remove_source_branch 병합 시 소스 브랜치를 제거하도록 병합 요청을 설정합니다.
merge_request.title="<title>" 병합 요청의 제목을 설정합니다. 예: git push -o merge_request.title="원하는 제목"
merge_request.description="<description>" 병합 요청의 설명을 설정합니다. 예: git push -o merge_request.description="원하는 설명"
merge_request.draft 병합 요청을 초안으로 표시합니다. 예: git push -o merge_request.draft. GitLab 15.0에서 소개되었습니다.
merge_request.milestone="<milestone>" 병합 요청의 마일스톤을 설정합니다. 예: git push -o merge_request.milestone="3.0". GitLab 14.1에서 소개되었습니다.
merge_request.label="<label>" 병합 요청에 라벨을 추가합니다. 라벨이 없는 경우 생성됩니다. 예를 들어 두 개의 라벨을 추가하려면: git push -o merge_request.label="label1" -o merge_request.label="label2"
merge_request.unlabel="<label>" 병합 요청에서 라벨을 제거합니다. 두 개의 라벨을 제거하려면: git push -o merge_request.unlabel="label1" -o merge_request.unlabel="label2"
merge_request.assign="<user>" 병합 요청에 사용자를 할당합니다. 사용자 이름 또는 사용자 ID를 허용합니다. 두 명의 사용자를 할당하려면: git push -o merge_request.assign="user1" -o merge_request.assign="user2". 사용자 이름 지원은 GitLab 15.5에 추가되었습니다.
merge_request.unassign="<user>" 할당된 사용자를 병합 요청에서 제거합니다. 사용자 이름 또는 사용자 ID를 허용합니다. 두 명의 사용자를 제거하려면: git push -o merge_request.unassign="user1" -o merge_request.unassign="user2". 사용자 이름 지원은 GitLab 15.5에 추가되었습니다.

푸시 옵션 형식

푸시 옵션에 텍스트에 공백이 포함된 경우 텍스트를 이중 인용부호(")로 묶어야 합니다. 공백이 없는 경우 인용부호를 생략할 수 있습니다. 몇 가지 예시:

git push -o merge_request.label="Label with spaces"
git push -o merge_request.label=Label-with-no-spaces

한 번에 여러 작업을 수행하려면 푸시 옵션을 결합하려면 여러 개의 -o (또는 --push-option) 플래그를 사용하세요. 이 명령은 새로운 병합 요청 생성하고 브랜치(my-target-branch)를 대상으로 지정하며 자동 병합합니다:

git push -o merge_request.create -o merge_request.target=my-target-branch -o merge_request.merge_when_pipeline_succeeds

일반 명령어에 대한 Git 별칭 생성

Git 명령어에 푸시 옵션을 추가하면 매우 긴 명령어가 생성될 수 있습니다. 만약 동일한 푸시 옵션을 자주 사용한다면 해당 옵션에 대한 Git 별칭을 생성하세요. Git 별칭은 긴 Git 명령어의 명령행 단축키입니다.

병합 시 파이프라인 성공 시 자동 병합 Git 푸시 옵션에 대한 Git 별칭을 생성하고 사용하려면 다음 단계를 따르세요:

  1. 터미널 창에서 다음 명령을 실행하세요:

    git config --global alias.mwps "push -o merge_request.create -o merge_request.target=main -o merge_request.merge_when_pipeline_succeeds"
    
  2. 기본 브랜치(main)를 대상으로 하는 로컬 브랜치를 자동으로 병합하려면 다음 명령을 실행하세요:

    git mwps origin <로컬-브랜치-이름>
    

관련 주제