InfoGrab Docs

머지 리퀘스트 문제 해결

요약

머지 리퀘스트로 작업할 때 다음과 같은 문제가 발생할 수 있습니다. 이는 Sidekiq가 변경 사항을 충분히 빠르게 처리하지 못하는 경우 발생할 수 있습니다. Sidekiq가 CI 상태 변경을 충분히 빠르게 처리하지 못했습니다.

머지 리퀘스트로 작업할 때 다음과 같은 문제가 발생할 수 있습니다.

머지 리퀘스트에서 파이프라인 상태를 가져올 수 없음#

이는 Sidekiq가 변경 사항을 충분히 빠르게 처리하지 못하는 경우 발생할 수 있습니다.

Sidekiq#

Sidekiq가 CI 상태 변경을 충분히 빠르게 처리하지 못했습니다. 몇 초 기다리면 상태가 자동으로 업데이트됩니다.

파이프라인 상태를 가져올 수 없음#

다음이 발생하면 머지 리퀘스트 파이프라인 상태를 가져올 수 없습니다:

  1. 머지 리퀘스트가 생성됨
  2. 머지 리퀘스트가 닫힘
  3. 프로젝트에 변경이 발생함
  4. 머지 리퀘스트가 다시 열림

파이프라인 상태가 제대로 가져와지도록 하려면 머지 리퀘스트를 다시 닫고 열어보세요.

Rails 콘솔에서 머지 리퀘스트 리베이스#

/rebase 빠른 액션 외에도, Rails 콘솔에 액세스할 수 있는 사용자는 Rails 콘솔에서 머지 리퀘스트를 리베이스할 수 있습니다. <username>, <namespace/project>, <iid>를 적절한 값으로 교체하세요:

Warning

데이터를 직접 변경하는 모든 명령은 올바르게 또는 적절한 조건에서 실행되지 않으면 손상을 줄 수 있습니다. 만약을 위해 인스턴스 백업이 준비된 테스트 환경에서 실행하는 것을 강력히 권장합니다.

u = User.find_by_username('<username>')
p = Project.find_by_full_path('<namespace/project>')
m = p.merge_requests.find_by(iid: <iid>)
MergeRequests::RebaseService.new(project: m.target_project, current_user: u).execute(m)

잘못된 머지 리퀘스트 상태 수정#

변경 사항이 머지된 후에도 머지 리퀘스트가 Open 상태로 남아 있는 경우, Rails 콘솔에 액세스할 수 있는 사용자는 머지 리퀘스트의 상태를 수정할 수 있습니다. <username>, <namespace/project>, <iid>를 적절한 값으로 교체하세요:

Warning

데이터를 직접 변경하는 모든 명령은 올바르게 또는 적절한 조건에서 실행되지 않으면 손상을 줄 수 있습니다. 만약을 위해 인스턴스 백업이 준비된 테스트 환경에서 실행하는 것을 강력히 권장합니다.

u = User.find_by_username('<username>')
p = Project.find_by_full_path('<namespace/project>')
m = p.merge_requests.find_by(iid: <iid>)
MergeRequests::PostMergeService.new(project: p, current_user: u).execute(m)

머지되지 않은 변경 사항이 있는 머지 리퀘스트에 대해 이 명령을 실행하면 머지 리퀘스트에 잘못된 메시지가 표시됩니다: merged into <branch-name>.

Rails 콘솔에서 머지 리퀘스트 닫기#

UI 또는 API를 통해 머지 리퀘스트를 닫는 것이 작동하지 않으면 Rails 콘솔 세션에서 닫기를 시도하세요:

Warning

데이터를 변경하는 명령은 올바르게 또는 적절한 조건에서 실행되지 않으면 손상을 줄 수 있습니다. 항상 먼저 테스트 환경에서 명령을 실행하고 복원할 준비가 된 백업 인스턴스가 있어야 합니다.

u = User.find_by_username('<username>')
p = Project.find_by_full_path('<namespace/project>')
m = p.merge_requests.find_by(iid: <iid>)
MergeRequests::CloseService.new(project: p, current_user: u).execute(m)

Rails 콘솔에서 머지 리퀘스트 삭제#

UI 또는 API를 통해 머지 리퀘스트를 삭제하는 것이 작동하지 않으면 Rails 콘솔 세션에서 삭제를 시도하세요:

Warning

데이터를 직접 변경하는 모든 명령은 올바르게 또는 적절한 조건에서 실행되지 않으면 손상을 줄 수 있습니다. 만약을 위해 인스턴스 백업이 준비된 테스트 환경에서 실행하는 것을 강력히 권장합니다.

u = User.find_by_username('<username>')
p = Project.find_by_full_path('<namespace/project>')
m = p.merge_requests.find_by(iid: <iid>)
Issuable::DestroyService.new(container: m.project, current_user: u).execute(m)

머지 리퀘스트 pre-receive 훅 실패#

머지 리퀘스트가 시간 초과되면 Puma 워커 시간 초과 문제를 나타내는 메시지가 표시될 수 있습니다:

  • GitLab UI에서:

    Something went wrong during merge pre-receive hook.
    500 Internal Server Error. Try again.
    
  • gitlab-rails/api_json.log 로그 파일에서:

    Rack::Timeout::RequestTimeoutException
    Request ran for longer than 60000ms
    

이 오류는 머지 리퀘스트가 다음인 경우 발생할 수 있습니다:

  • 많은 diff를 포함합니다.
  • 대상 브랜치보다 많은 커밋 뒤에 있습니다.
  • 잠긴 Git LFS 파일을 참조합니다.

GitLab Self-Managed 사용자는 관리자에게 오류 원인을 결정하기 위해 서버 로그를 검토하도록 요청할 수 있습니다. GitLab.com 사용자는 도움을 받기 위해 지원팀에 문의해야 합니다.

캐시된 머지 리퀘스트 수#

그룹에서 사이드바는 열린 머지 리퀘스트의 총 수를 표시합니다. 이 값은 1000보다 크면 캐시됩니다. 캐시된 값은 수천(또는 수백만)으로 반올림되며 24시간마다 업데이트됩니다.

head ref를 통해 로컬에서 머지 리퀘스트 체크아웃#

히스토리
  • 머지 리퀘스트가 닫히거나 머지된 후 14일 후 head ref를 삭제하는 기능이 GitLab 16.4에서 GitLab Self-Managed와 GitLab.com에 활성화되었습니다.
  • 머지 리퀘스트가 닫히거나 머지된 후 14일 후 head ref를 삭제하는 기능이 GitLab 16.6에서 일반 제공됩니다. 기능 플래그 merge_request_refs_cleanup이 제거됩니다.

머지 리퀘스트는 리포지터리의 모든 히스토리와 머지 리퀘스트에 연결된 브랜치에 추가된 추가 커밋을 포함합니다. 로컬에서 머지 리퀘스트를 체크아웃하는 몇 가지 방법이 있습니다.

소스 프로젝트가 대상 프로젝트의 포크(비공개 포크 포함)인 경우에도 로컬에서 머지 리퀘스트를 체크아웃할 수 있습니다.

이는 각 머지 리퀘스트에 사용 가능한 머지 리퀘스트 head ref(refs/merge-requests/:iid/head)에 의존합니다. 브랜치 대신 ID를 사용하여 머지 리퀘스트를 체크아웃할 수 있습니다.

GitLab 16.6 이상에서는 머지 리퀘스트가 닫히거나 머지된 후 14일 후에 머지 리퀘스트 head ref가 삭제됩니다. 그러면 머지 리퀘스트 head ref에서 로컬 체크아웃이 더 이상 사용할 수 없게 됩니다. 머지 리퀘스트를 다시 열 수는 있습니다. 머지 리퀘스트의 브랜치가 존재하면 영향을 받지 않으므로 해당 브랜치를 체크아웃할 수 있습니다.

glab을 사용하여 로컬에서 체크아웃#

glab mr checkout <merge_request_iid>

GitLab 터미널 클라이언트에 대한 자세한 정보를 참조하세요.

Git 별칭 추가로 로컬에서 체크아웃#

~/.gitconfig에 다음 별칭을 추가합니다:

[alias]
    mr = !sh -c 'git fetch $1 merge-requests/$2/head:mr-$1-$2 && git checkout mr-$1-$2' -

이제 어떤 리포지터리와 어떤 원격에서든 특정 머지 리퀘스트를 체크아웃할 수 있습니다. 예를 들어 origin 원격에서 GitLab에 표시된 ID가 5인 머지 리퀘스트를 체크아웃하려면 다음을 실행합니다:

git mr origin 5

이렇게 하면 머지 리퀘스트를 로컬 mr-origin-5 브랜치로 가져오고 체크아웃합니다.

특정 리포지터리의 .git/config를 수정하여 로컬에서 체크아웃#

.git/config 파일에서 GitLab 원격 섹션을 찾습니다. 다음과 같이 보입니다:

[remote "origin"]
  url = https://gitlab.com/gitlab-org/gitlab-foss.git
  fetch = +refs/heads/*:refs/remotes/origin/*

다음 명령으로 파일을 열 수 있습니다:

git config -e

이제 이전 섹션에 다음 줄을 추가합니다:

fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*

최종적으로 다음과 같아야 합니다:

[remote "origin"]
  url = https://gitlab.com/gitlab-org/gitlab-foss.git
  fetch = +refs/heads/*:refs/remotes/origin/*
  fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*

이제 모든 머지 리퀘스트를 가져올 수 있습니다:

git fetch origin

...
From https://gitlab.com/gitlab-org/gitlab-foss.git
 * [new ref]         refs/merge-requests/1/head -> origin/merge-requests/1
 * [new ref]         refs/merge-requests/2/head -> origin/merge-requests/2
...

특정 머지 리퀘스트를 체크아웃하려면:

git checkout origin/merge-requests/1

이 명령들은 git-mr 스크립트로도 수행할 수 있습니다.

오류: 브랜치가 존재할 때 source branch <branch_name> does not exist.#

이 오류는 GitLab 캐시가 Git 리포지터리의 실제 상태를 반영하지 않는 경우 발생할 수 있습니다. Git 데이터 폴더가 noexec 플래그로 마운트된 경우 발생할 수 있습니다.

사전 요구 사항:

  • 관리자여야 합니다.

캐시 업데이트를 강제하려면:

  1. 다음 명령으로 GitLab Rails 콘솔을 엽니다:

    sudo gitlab-rails console
    
  2. Rails 콘솔에서 다음 스크립트를 실행합니다:

    # 프로젝트 가져오기
    project = Project.find_by_full_path('affected/project/path')
    
    # 캐시에 영향을 받는 브랜치가 있는지 확인 (false를 반환할 수 있음)
    project.repository.branch_names.include?('affected_branch_name')
    
    # 브랜치 캐시 만료
    project.repository.expire_branches_cache
    
    # 캐시에 영향을 받는 브랜치가 있는지 다시 확인 (이번에는 true를 반환해야 함)
    project.repository.branch_names.include?('affected_branch_name')
    
  3. 머지 리퀘스트를 다시 로드합니다.

자동화가 머지 리퀘스트를 승인할 때 승인 재설정#

머지 리퀘스트 생성 또는 푸시를 자동화하는 경우, 해당 머지 리퀘스트에 대한 자동화된 승인을 구성하고 싶을 수 있습니다. GitLab Premium 및 Ultimate에서는 기본적으로 소스 브랜치에 커밋이 추가될 때 모든 승인이 제거됩니다. 이 문제를 피하려면 머지 리퀘스트를 승인하기 전에 커밋이 처리되도록 자동화에 로직을 추가하세요.

머지 리퀘스트가 예상치 않게 Merged로 표시됨#

머지된 머지 리퀘스트에 merged manually 시스템 노트가 포함된 경우, 소스 브랜치 커밋이 GitLab UI 외부에서 머지되었거나 다른 머지 리퀘스트의 일부로 머지된 것입니다.

GitLab UI 외부에서 머지됨#

git merge를 사용하여 브랜치를 UI 외부에서 대상 브랜치에 직접 머지하면, GitLab이 이 작업을 감지하고 머지 리퀘스트를 merged manually로 표시합니다.

이는 대상 브랜치에 직접 푸시가 허용된 경우 발생할 수 있습니다. 이 상황을 방지하려면 대상 브랜치를 보호하고 직접 푸시를 허용하지 않도록 구성합니다 (푸시 및 머지 허용아무도 없음으로 설정).

자세한 내용은 브랜치 보호를 참조하세요.

다른 머지 리퀘스트의 일부로 머지됨#

머지 리퀘스트에 이미 다른 머지 리퀘스트의 일부로 머지된 커밋이 포함되어 있습니다. 보호된 브랜치에서 발생하는 경우, 커밋은 보호된 브랜치 설정에 따라 머지되기 전에 승인됩니다.

자세한 내용은 동일한 커밋을 포함하는 여러 브랜치를 참조하세요.

Note

경우에 따라 GitLab이 Merged with !<merge_request_id> 대신 merged manually를 표시할 수 있습니다. 자세한 내용은 이슈 456426을 참조하세요.

머지 리퀘스트 문제 해결

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

머지 리퀘스트로 작업할 때 다음과 같은 문제가 발생할 수 있습니다. 이는 Sidekiq가 변경 사항을 충분히 빠르게 처리하지 못하는 경우 발생할 수 있습니다. Sidekiq가 CI 상태 변경을 충분히 빠르게 처리하지 못했습니다.

머지 리퀘스트로 작업할 때 다음과 같은 문제가 발생할 수 있습니다.

머지 리퀘스트에서 파이프라인 상태를 가져올 수 없음#

이는 Sidekiq가 변경 사항을 충분히 빠르게 처리하지 못하는 경우 발생할 수 있습니다.

Sidekiq#

Sidekiq가 CI 상태 변경을 충분히 빠르게 처리하지 못했습니다. 몇 초 기다리면 상태가 자동으로 업데이트됩니다.

파이프라인 상태를 가져올 수 없음#

다음이 발생하면 머지 리퀘스트 파이프라인 상태를 가져올 수 없습니다:

  1. 머지 리퀘스트가 생성됨
  2. 머지 리퀘스트가 닫힘
  3. 프로젝트에 변경이 발생함
  4. 머지 리퀘스트가 다시 열림

파이프라인 상태가 제대로 가져와지도록 하려면 머지 리퀘스트를 다시 닫고 열어보세요.

Rails 콘솔에서 머지 리퀘스트 리베이스#

/rebase 빠른 액션 외에도, Rails 콘솔에 액세스할 수 있는 사용자는 Rails 콘솔에서 머지 리퀘스트를 리베이스할 수 있습니다. <username>, <namespace/project>, <iid>를 적절한 값으로 교체하세요:

Warning

데이터를 직접 변경하는 모든 명령은 올바르게 또는 적절한 조건에서 실행되지 않으면 손상을 줄 수 있습니다. 만약을 위해 인스턴스 백업이 준비된 테스트 환경에서 실행하는 것을 강력히 권장합니다.

u = User.find_by_username('<username>')
p = Project.find_by_full_path('<namespace/project>')
m = p.merge_requests.find_by(iid: <iid>)
MergeRequests::RebaseService.new(project: m.target_project, current_user: u).execute(m)

잘못된 머지 리퀘스트 상태 수정#

변경 사항이 머지된 후에도 머지 리퀘스트가 Open 상태로 남아 있는 경우, Rails 콘솔에 액세스할 수 있는 사용자는 머지 리퀘스트의 상태를 수정할 수 있습니다. <username>, <namespace/project>, <iid>를 적절한 값으로 교체하세요:

Warning

데이터를 직접 변경하는 모든 명령은 올바르게 또는 적절한 조건에서 실행되지 않으면 손상을 줄 수 있습니다. 만약을 위해 인스턴스 백업이 준비된 테스트 환경에서 실행하는 것을 강력히 권장합니다.

u = User.find_by_username('<username>')
p = Project.find_by_full_path('<namespace/project>')
m = p.merge_requests.find_by(iid: <iid>)
MergeRequests::PostMergeService.new(project: p, current_user: u).execute(m)

머지되지 않은 변경 사항이 있는 머지 리퀘스트에 대해 이 명령을 실행하면 머지 리퀘스트에 잘못된 메시지가 표시됩니다: merged into <branch-name>.

Rails 콘솔에서 머지 리퀘스트 닫기#

UI 또는 API를 통해 머지 리퀘스트를 닫는 것이 작동하지 않으면 Rails 콘솔 세션에서 닫기를 시도하세요:

Warning

데이터를 변경하는 명령은 올바르게 또는 적절한 조건에서 실행되지 않으면 손상을 줄 수 있습니다. 항상 먼저 테스트 환경에서 명령을 실행하고 복원할 준비가 된 백업 인스턴스가 있어야 합니다.

u = User.find_by_username('<username>')
p = Project.find_by_full_path('<namespace/project>')
m = p.merge_requests.find_by(iid: <iid>)
MergeRequests::CloseService.new(project: p, current_user: u).execute(m)

Rails 콘솔에서 머지 리퀘스트 삭제#

UI 또는 API를 통해 머지 리퀘스트를 삭제하는 것이 작동하지 않으면 Rails 콘솔 세션에서 삭제를 시도하세요:

Warning

데이터를 직접 변경하는 모든 명령은 올바르게 또는 적절한 조건에서 실행되지 않으면 손상을 줄 수 있습니다. 만약을 위해 인스턴스 백업이 준비된 테스트 환경에서 실행하는 것을 강력히 권장합니다.

u = User.find_by_username('<username>')
p = Project.find_by_full_path('<namespace/project>')
m = p.merge_requests.find_by(iid: <iid>)
Issuable::DestroyService.new(container: m.project, current_user: u).execute(m)

머지 리퀘스트 pre-receive 훅 실패#

머지 리퀘스트가 시간 초과되면 Puma 워커 시간 초과 문제를 나타내는 메시지가 표시될 수 있습니다:

  • GitLab UI에서:

    Something went wrong during merge pre-receive hook.
    500 Internal Server Error. Try again.
    
  • gitlab-rails/api_json.log 로그 파일에서:

    Rack::Timeout::RequestTimeoutException
    Request ran for longer than 60000ms
    

이 오류는 머지 리퀘스트가 다음인 경우 발생할 수 있습니다:

  • 많은 diff를 포함합니다.
  • 대상 브랜치보다 많은 커밋 뒤에 있습니다.
  • 잠긴 Git LFS 파일을 참조합니다.

GitLab Self-Managed 사용자는 관리자에게 오류 원인을 결정하기 위해 서버 로그를 검토하도록 요청할 수 있습니다. GitLab.com 사용자는 도움을 받기 위해 지원팀에 문의해야 합니다.

캐시된 머지 리퀘스트 수#

그룹에서 사이드바는 열린 머지 리퀘스트의 총 수를 표시합니다. 이 값은 1000보다 크면 캐시됩니다. 캐시된 값은 수천(또는 수백만)으로 반올림되며 24시간마다 업데이트됩니다.

head ref를 통해 로컬에서 머지 리퀘스트 체크아웃#

히스토리
  • 머지 리퀘스트가 닫히거나 머지된 후 14일 후 head ref를 삭제하는 기능이 GitLab 16.4에서 GitLab Self-Managed와 GitLab.com에 활성화되었습니다.
  • 머지 리퀘스트가 닫히거나 머지된 후 14일 후 head ref를 삭제하는 기능이 GitLab 16.6에서 일반 제공됩니다. 기능 플래그 merge_request_refs_cleanup이 제거됩니다.

머지 리퀘스트는 리포지터리의 모든 히스토리와 머지 리퀘스트에 연결된 브랜치에 추가된 추가 커밋을 포함합니다. 로컬에서 머지 리퀘스트를 체크아웃하는 몇 가지 방법이 있습니다.

소스 프로젝트가 대상 프로젝트의 포크(비공개 포크 포함)인 경우에도 로컬에서 머지 리퀘스트를 체크아웃할 수 있습니다.

이는 각 머지 리퀘스트에 사용 가능한 머지 리퀘스트 head ref(refs/merge-requests/:iid/head)에 의존합니다. 브랜치 대신 ID를 사용하여 머지 리퀘스트를 체크아웃할 수 있습니다.

GitLab 16.6 이상에서는 머지 리퀘스트가 닫히거나 머지된 후 14일 후에 머지 리퀘스트 head ref가 삭제됩니다. 그러면 머지 리퀘스트 head ref에서 로컬 체크아웃이 더 이상 사용할 수 없게 됩니다. 머지 리퀘스트를 다시 열 수는 있습니다. 머지 리퀘스트의 브랜치가 존재하면 영향을 받지 않으므로 해당 브랜치를 체크아웃할 수 있습니다.

glab을 사용하여 로컬에서 체크아웃#

glab mr checkout <merge_request_iid>

GitLab 터미널 클라이언트에 대한 자세한 정보를 참조하세요.

Git 별칭 추가로 로컬에서 체크아웃#

~/.gitconfig에 다음 별칭을 추가합니다:

[alias]
    mr = !sh -c 'git fetch $1 merge-requests/$2/head:mr-$1-$2 && git checkout mr-$1-$2' -

이제 어떤 리포지터리와 어떤 원격에서든 특정 머지 리퀘스트를 체크아웃할 수 있습니다. 예를 들어 origin 원격에서 GitLab에 표시된 ID가 5인 머지 리퀘스트를 체크아웃하려면 다음을 실행합니다:

git mr origin 5

이렇게 하면 머지 리퀘스트를 로컬 mr-origin-5 브랜치로 가져오고 체크아웃합니다.

특정 리포지터리의 .git/config를 수정하여 로컬에서 체크아웃#

.git/config 파일에서 GitLab 원격 섹션을 찾습니다. 다음과 같이 보입니다:

[remote "origin"]
  url = https://gitlab.com/gitlab-org/gitlab-foss.git
  fetch = +refs/heads/*:refs/remotes/origin/*

다음 명령으로 파일을 열 수 있습니다:

git config -e

이제 이전 섹션에 다음 줄을 추가합니다:

fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*

최종적으로 다음과 같아야 합니다:

[remote "origin"]
  url = https://gitlab.com/gitlab-org/gitlab-foss.git
  fetch = +refs/heads/*:refs/remotes/origin/*
  fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*

이제 모든 머지 리퀘스트를 가져올 수 있습니다:

git fetch origin

...
From https://gitlab.com/gitlab-org/gitlab-foss.git
 * [new ref]         refs/merge-requests/1/head -> origin/merge-requests/1
 * [new ref]         refs/merge-requests/2/head -> origin/merge-requests/2
...

특정 머지 리퀘스트를 체크아웃하려면:

git checkout origin/merge-requests/1

이 명령들은 git-mr 스크립트로도 수행할 수 있습니다.

오류: 브랜치가 존재할 때 source branch <branch_name> does not exist.#

이 오류는 GitLab 캐시가 Git 리포지터리의 실제 상태를 반영하지 않는 경우 발생할 수 있습니다. Git 데이터 폴더가 noexec 플래그로 마운트된 경우 발생할 수 있습니다.

사전 요구 사항:

  • 관리자여야 합니다.

캐시 업데이트를 강제하려면:

  1. 다음 명령으로 GitLab Rails 콘솔을 엽니다:

    sudo gitlab-rails console
    
  2. Rails 콘솔에서 다음 스크립트를 실행합니다:

    # 프로젝트 가져오기
    project = Project.find_by_full_path('affected/project/path')
    
    # 캐시에 영향을 받는 브랜치가 있는지 확인 (false를 반환할 수 있음)
    project.repository.branch_names.include?('affected_branch_name')
    
    # 브랜치 캐시 만료
    project.repository.expire_branches_cache
    
    # 캐시에 영향을 받는 브랜치가 있는지 다시 확인 (이번에는 true를 반환해야 함)
    project.repository.branch_names.include?('affected_branch_name')
    
  3. 머지 리퀘스트를 다시 로드합니다.

자동화가 머지 리퀘스트를 승인할 때 승인 재설정#

머지 리퀘스트 생성 또는 푸시를 자동화하는 경우, 해당 머지 리퀘스트에 대한 자동화된 승인을 구성하고 싶을 수 있습니다. GitLab Premium 및 Ultimate에서는 기본적으로 소스 브랜치에 커밋이 추가될 때 모든 승인이 제거됩니다. 이 문제를 피하려면 머지 리퀘스트를 승인하기 전에 커밋이 처리되도록 자동화에 로직을 추가하세요.

머지 리퀘스트가 예상치 않게 Merged로 표시됨#

머지된 머지 리퀘스트에 merged manually 시스템 노트가 포함된 경우, 소스 브랜치 커밋이 GitLab UI 외부에서 머지되었거나 다른 머지 리퀘스트의 일부로 머지된 것입니다.

GitLab UI 외부에서 머지됨#

git merge를 사용하여 브랜치를 UI 외부에서 대상 브랜치에 직접 머지하면, GitLab이 이 작업을 감지하고 머지 리퀘스트를 merged manually로 표시합니다.

이는 대상 브랜치에 직접 푸시가 허용된 경우 발생할 수 있습니다. 이 상황을 방지하려면 대상 브랜치를 보호하고 직접 푸시를 허용하지 않도록 구성합니다 (푸시 및 머지 허용아무도 없음으로 설정).

자세한 내용은 브랜치 보호를 참조하세요.

다른 머지 리퀘스트의 일부로 머지됨#

머지 리퀘스트에 이미 다른 머지 리퀘스트의 일부로 머지된 커밋이 포함되어 있습니다. 보호된 브랜치에서 발생하는 경우, 커밋은 보호된 브랜치 설정에 따라 머지되기 전에 승인됩니다.

자세한 내용은 동일한 커밋을 포함하는 여러 브랜치를 참조하세요.

Note

경우에 따라 GitLab이 Merged with !<merge_request_id> 대신 merged manually를 표시할 수 있습니다. 자세한 내용은 이슈 456426을 참조하세요.