[GitLab] git cli로 Merge Request 생성

안녕하세요 오늘은 BESPIN GLOBAL AI실 오유진님이 작성해주신 ‘git cli로 Merge Request 생성’ 대해 소개해드리도록 하겠습니다.

목차
1. 개요
2. git push -o
3. 테스트
4. 참고 문서

1. 개요

  • 로컬 GitLab 레포지터리에서 발생한 수정 사항을 원격지에 Push 하고 싶은 경우
  • Branch 전략에 의해 master/main 브랜치에 직접 push하는 게 아니라 Merge Request를 통해 수정 사항을 반영하려고 하는데, 이 과정을 자동화할 수 있었으면 하는 니즈
  • 혹시 Git CLI 등으로 MR을 생성할 수 있는지, 어떻게 하는지 방법 정리

2. 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 할당자 지정

3. 테스트

  • 이제 실제로 git 명령어로 MR을 생성할 수 있는지 확인합니다.
  • 테스트 레포지터리
    • main 브랜치만 존재하는 test 레포지터리에 MR을 생성해 본다. merge 요청 대상 브랜치는 main입니다.

테스트 레포지터리

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

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

git clone <GITLAB_REPOSITORY>

cd GITLAB_REPOSITORY
git checkout -b <NEW_BRANCH>

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

3-2. 수정 사항 Commit

  • 수정한 부분을 Commit 합니다.

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

수정한 부분을 Commit 한다.

3-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"

3. MR 생성

이상이 없다면 push가 정상적으로 이루어집니다.

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

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

4. 참고 문서

여기까지 ‘git cli로 Merge Request 생성’에 대해 소개해드렸습니다. 유익한 정보가 되셨길 바랍니다. 감사합니다. 

Written by 오 유진/ AI실

BESPIN GLOBAL