풀 요청 대 병합 요청


466

풀 요청과 병합 요청의 차이점은 무엇입니까?

Github에서는 풀 요청이고 GitLab에서는 병합 요청입니다. 둘 사이에 차이점이 있습니까?

답변:


763

GitLab의 "병합 요청" 기능은 GitHub의 "풀 요청" 기능 과 동일 합니다. 둘 다 다른 브랜치 나 포크에서 변경 사항을 브랜치로 가져와 기존 코드와 변경 사항을 병합하는 수단입니다. 코드 검토 및 변경 관리에 유용한 도구입니다.

GitLab기사 는 기능의 이름을 지정하는 차이점에 대해 설명합니다.

병합 또는 풀 요청은 git 관리 응용 프로그램에서 생성되며 할당 된 사람에게 두 분기를 병합하도록 요청합니다. GitHub 및 Bitbucket과 같은 도구는 첫 번째 수동 작업이 기능 분기를 가져 오는 것이기 때문에 이름 풀 요청을 선택합니다. GitLab 및 Gitorious와 같은 도구는 이름 병합 요청을 선택합니다.이 요청은 양수인이 요청한 최종 작업이기 때문입니다. 이 기사에서는이를 병합 요청이라고합니다.

"병합 요청"을 git merge명령 과 혼동해서는 안됩니다 . "풀 요청"이 git pull명령 과 혼동되어서는 안됩니다 . 두 git명령 모두 끌어 오기 요청과 병합 요청에서 뒤에서 사용되지만 병합 / 풀 요청은이 두 명령보다 훨씬 광범위한 주제를 나타냅니다.


1
끌어 오기 요청이있을 때 GitHub가 중간 / 임시 분기 (보이지 않음)를 생성합니까?
Robert Koritnik

1
@stevemao 우리가 그들에게 접근 할 수 있습니까? 우리는 그들에게 갈등을 해결할 수있을 때만 읽기만합니까?
Robert Koritnik

11
내가 무엇을 놓치고 있습니까? 풀 = 페치 + 병합 최종 조치가 병합되면 첫 번째 조치를 가져와야합니다.
Vytenis Bivainis

59
MR은 모든 곳에서 더 나은 이름입니다. Pull Request는 첫 번째 조치에 대한 귀하의 설명을 읽을 때까지 나에게 의미가 없었습니다. "안녕하세요,이 코드를 마스터 브랜치에 병합 할 수 있습니까?" vs "hello,이 코드를 <implied merging>의 보이지 않는 분기로 끌어 올 수 있습니까?"-분명한 승자가 있습니다.
Granitosaurus

7
@Granitosaurus 합의. git 초보자에게는 pull 요청이 내가 기대했던 것과 완전히 다릅니다. Gitlab을 사용하기 시작하자마자 병합 요청이 의미가있었습니다.
Mark Lyons

54

그들은 같은 기능입니다

병합 또는 풀 요청은 git 관리 응용 프로그램에서 생성되며 할당 된 사람에게 두 분기를 병합하도록 요청합니다. GitHub 및 Bitbucket과 같은 도구는 첫 번째 수동 작업이 기능 분기를 가져 오는 것이기 때문에 이름 풀 요청을 선택합니다. GitLab 및 Gitorious와 같은 도구는 이름 병합 요청을 선택합니다.이 요청은 양수인이 요청한 최종 작업이기 때문입니다. 이 기사에서는이를 병합 요청이라고합니다.

-https : //about.gitlab.com/2014/09/29/gitlab-flow/


새로운 기능을 추가하는 개발자의 책임은 합병되어서는 안됩니다. 개발자 A가 feature_branch에 기능을 추가하면 마스터 브랜치를 가져 와서 브랜치에서 병합해야 모든 충돌을 해결하고 병합 요청을 만들기 전에 테스트해야합니까?
Ciasto piekarz

2
예. 그러나 코드를 마스터하기 위해 그 후에 누군가가 수행해야하는 빨리 감기 병합이 있습니다. 실제로 풀 타임 개발자 팀에서는 기능 개발자가 병합하는 것이 가장 좋을지 모르지만 누군가 PR을 먼저 검토하기를 기다리는 것이 유용 할 수 있습니다.
bdsl

21

내 관점에서, 그들은 같은 활동을 의미하지만 다른 관점에서 의미합니다.

Alice가 Bob의 저장소 B에서 분기 된 저장소 A를 커밋합니다.

Alice가 변경 사항을 B로 "병합"하려는 경우 실제로 Bob은 이러한 변경 사항을 A에서 "풀"하기를 원합니다.

따라서 Alice의 관점에서는 "병합 요청"이고 Bob은이를 "풀 요청"으로 봅니다.


작은 동료가 git의 작동 방식을 알리기 위해 작은 보고서를 만들었을 때의 예를 상기시켜주었습니다.
Ravi Yadav

4

갈등 관리 측면에서 미묘한 차이가 있습니다. 충돌이 발생하면 Github의 풀 요청으로 대상 분기 에서 병합 커밋이 발생합니다 . Gitlab에서 충돌이 발견되면 수정 사항은 소스 브랜치 의 병합 커밋에서 이루어집니다 .

https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html을 참조 하십시오

"GitLab은 소스 브랜치에서 대상 브랜치로 자동 병합되지 않는 병합 커밋을 생성하여 충돌을 해결합니다.이를 통해 변경 사항이 병합되기 전에 병합 커밋을 검토하고 테스트하여 의도하지 않은 변경 사항이 검토 또는 중단없이 대상 브랜치에 진입하는 것을 방지합니다. 빌드. "


3

GitLab 12.1 (2019 년 7 월)에는 다음과 같은 차이점이 있습니다.

" 기밀 문제에 대한 요청 병합 "

보안 취약점과 같은 기밀 문제를 논의, 계획 및 해결할 때 Git 저장소가 공개되어 있기 때문에 오픈 소스 프로젝트의 효율성을 유지하는 것이 특히 어려울 수 있습니다.

https://about.gitlab.com/images/12_1/mr-confidential.png

12.1부터는 기밀 병합 요청 만들기 버튼을 사용하여 간소화 된 워크 플로 내에서 공개 프로젝트의 기밀 문제를 해결할 수 있습니다.이 기능을 사용하면 프로젝트의 개인 분기에 병합 요청을 만들 수 있습니다.

문제 58583의 " 기밀 문제 "를 참조하십시오 .

비슷한 기능이 GitHub에 존재하지만 " 관리자 보안 권고 " 라고하는 특수한 개인 포크 작성이 포함됩니다 .


0

이전 답변에서 언급했듯이 둘 다 거의 같은 목적으로 사용됩니다. 개인적으로 git rebase 및 merge 요청을 좋아합니다 (gitlab에서와 같이). 검토 자 / 유지 업체의 부담을 덜어주고 병합 요청을 추가하는 동안 기능 분기에는 기능 분기가 작성된 후 기본 분기에서 수행 된 모든 최신 커밋이 포함됩니다. 다음은 rebase를 자세히 설명하는 매우 유용한 기사입니다. https://git-scm.com/book/en/v2/Git-Branching-Rebasing

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.