Git | GitLab

[GitLab] git cli로 Merge Request 생성

비번변경 2024. 1. 30. 15:49

개요

로컬 GitLab 레포지터리에서 발생한 수정 사항을 원격지에 Push 하고 싶다.

Branch 전략에 의해 master/main 브랜치에 직접 push하는 게 아니라 Merge Request를 통해 수정 사항을 반영하려고 하는데, 이 과정을 자동화할 수 있었으면 한다.

혹시 Git CLI 등으로 MR을 생성할 수 있는지, 어떻게 하는지 정리한다.

 

 

git push -o

구글링과 공식 문서에 의하면 Git 2.10 이상 GitLab 11.10부터 push 명령에 옵션을 추가하여 MR을 생성할 수 있다고 한다.

git push --push-option=<push_option>

# 또는
git push -o <push_option>

사용할 수 있는 옵션은 여러가지인데 MR 생성과 설정에 대한 기본적인 옵션 정도만 살펴봤다.

git push <REMOTE> <BRANCH>\
    -o merge_request.create \ # push 브랜치에 대한 MR 생성
    -o merge_request.target=my-target-branch \ # Merge 요청 대상 지정
    -o merge_request.remove_source_branch \ # Merge 시 source 브랜치 삭제
    -o merge_request.title="<title>" \ # MR 제목 지정
    -o merge_request.description="<description>" \ # MR description 지정
    -o merge_request.assign="<user>" # Merge Request 할당자 지정

 

이외 다른 MR 관련 push 옵션은 아래 링크에서 확인하는 것이 좋겠다.

https://docs.gitlab.com/ee/user/project/push_options.html#push-options-for-merge-requests

 

 

테스트

이제 실제로 git 명령어로 MR을 생성할 수 있는지 확인해 본다.

 

 

테스트 레포지터리

main 브랜치만 존재하는 test 레포지터리에 MR을 생성해 본다. merge 요청 대상 브랜치는 main이다.

 

 

1. 로컬 레포지터리에 신규 브랜치 생성 및 수정

테스트할 레포지터리를 로컬 컴퓨터에 Clone, 신규 브랜치 생성 및 파일을 수정한다.

git clone <GITLAB_REPOSITORY>

cd GITLAB_REPOSITORY
git checkout -b <NEW_BRANCH>

 

 

2. 수정 사항 Commit

수정한 부분을 Commit 한다.

git add <FILE>
git commit -m "<MESSAGE>"

 

 

3. MR 생성

위에서 확인한 대로 옵션을 주어 git push를 수행한다.

git push origin test_create_mr \
    -o merge_request.create \
    -o merge_request.target=main \
    -o merge_request.remove_source_branch \
    -o merge_request.title="TEST MR" \
    -o merge_request.description="MAKE MR using CLI" \
    -o merge_request.assign="qwer1111"

이상이 없다면 push가 정상적으로 이뤄진다.

 

4. 원격 레포지터리 MR 확인

push 결과에서 확인할 수 있는 MR 링크 등으로 원격 레포지터리의 MR을 확인해 보면 push 옵션으로 지정한 내용대로 MR이 생성된 것을 확인할 수 있다.

 

 

 

 

참고 문서

https://docs.gitlab.com/ee/user/project/push_options.html

https://stackoverflow.com/questions/37410262/how-to-create-a-gitlab-merge-request-via-command-line

 

728x90