푸시 옵션

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

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

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

git push -o <push_option>

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

git push --push-option=<push_option>

서버 측 제어 및 모범 사례의 강제 실행을 위해서는 푸시 규칙서버 후크를 참조하세요.

GitLab CI/CD의 푸시 옵션

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

note
푸시 옵션은 Merge Request 파이프라인에는 사용할 수 없습니다. 자세한 내용은 이슈 373212을 참조하세요.
푸시 옵션 설명 예시
ci.skip 최신 푸시에 대한 CI/CD 파이프라인을 생성하지 않습니다. 브랜치 파이프라인만 건너뜁니다. Merge Request 파이프라인은 건너뜁니다. Jenkins와 같은 CI/CD 통합을 건너뛰지 않습니다. git push -o ci.skip
ci.variable="<name>=<value>" CI/CD 파이프라인에 CI/CD 변수을 제공합니다. 최신 푸시로 인해 생성된 파이프라인에만 변수를 전달합니다. Merge Request 파이프라인에는 적용되지 않습니다. 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 통합을 위한 푸시 이벤트를 건너뜁니다. GitLab 16.2에서 도입되었습니다. git push -o integrations.skip_ci

Merge Request을 위한 푸시 옵션

Merge Request을 위해 변경 사항을 푸시하는 동안 Git 푸시 옵션을 사용하여 작업을 수행할 수 있습니다:

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

푸시 옵션의 형식

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

git push -o merge_request.label="공백이 있는 라벨"
git push -o merge_request.label=공백이-없는-라벨

여러 작업을 동시에 수행하기 위해 푸시 옵션을 결합하려면 여러 -o (또는 --push-option) 플래그를 사용하세요. 이 명령은 새로운 Merge Request을 생성하고 브랜치를 대상으로 지정하며 자동 Merge을 설정합니다:

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 명령어의 명령줄 바로 가기입니다.

Merge 시에 파이프라인이 성공하면 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)를 대상으로 자동으로 Merge하는 데 사용하는 별칭을 실행하려면 다음 명령을 실행합니다:

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

관련 주제