푸시 옵션

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 변수를 전달할 수 있습니다.

caution
푸시 옵션은 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.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".
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에서 사용자명 지원이 추가되었습니다.

비밀 검출을 위한 푸시 옵션

사전 수신 비밀 검출을 건너뛰기 위해 푸시 옵션을 사용할 수 있습니다.

푸시 옵션 설명 예시
secret_detection.skip_all 이 푸시에서 모든 커밋에 대해 사전 수신 비밀 검출을 수행하지 않습니다. git push -o secret_detection.skip_all

푸시 옵션 형식

푸시 옵션에 공백이 포함된 텍스트가 필요한 경우 텍스트를 이중 인용부호(")로 묶으십시오. 공백이 없으면 인용부호를 생략할 수 있습니다. 몇 가지 예시:

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 <로컬-브랜치-이름>
    

관련 주제