git 'pull request'가 'push request'라고 불리는 이유는 무엇입니까?


452

지점을 공식 저장소와 병합하는 데 사용되는 용어는 '풀 요청'입니다. 변경 사항을 공식 저장소로 푸시하도록 요청하는 것처럼 보이기 때문에 혼란 스럽습니다.

푸시 요청이 아닌 풀 요청이라고하는 이유는 무엇입니까?


45
큰 살아있는 나무를 상상해보십시오. 나무는 나뭇 가지가 들어가기에는 너무 튼튼합니다. 대신 나무에 가지를 줄기로 끌어 당겨서 강화시켜야합니다.
Luke


2
gitihub와 같은 원격 저장소를 사용하는 경우, 관리자가 명령 행을 통해 요청을 이행 할 때 실행할 마지막 명령 중 하나는 git push입니다. 나에게 그 모든 것을 말해줍니다 ... (예, 그들은 git pull을 발행 한 다음 git push를 발행 할 수 있지만 푸시가 요청되었고 궁극적으로 수행되는 작업입니다)
ebyrob

62
GitLab은이를 호출합니다 merge requests. 훨씬 더 명확합니다. IMHO. :)
U007D

답변:


377

저장소에 코드가 변경되어 있고이를 대상 저장소로 이동하려면 다음을 수행하십시오.

  • "푸시"는 대상 리포지토리 ( git push) 에 변경 사항을 강제 적용하는 것 입니다.
  • "풀 (Pull)"은 변경 내용을 git pull다른 리포지토리에서 가져 오는 대상 리포지토리 입니다.

"풀 요청 (pull request)"은 대상 저장소에 변경 사항을 가져 오도록 요청하는 것입니다.

"푸시 요청"은 변경 사항을 푸시하도록 요청하는 대상 저장소입니다.


21
이것은 명명 규칙에서도 나에게 문제가되었습니다 .D & u는 이해하기가 훨씬 간단 해졌습니다. 은행에서 통화 매수 / 매도 방식과 동일한 방식으로 생각합니다.
nsuinteger

"대상 저장소", "변경 사항"에 대해 혼동이 있기 때문에 "풀"에 대한 정의를 재정의해야한다고 생각합니다. "리포지토리에서 변경 사항을 가져 오는 리포지토리"라고 말하고 싶습니까?
MrPisarik

9
핵심 아이디어는 "푸시"/ "풀"용어를 사용하여 전송 중인 정보를 생성하는 당사자가 아니라 전송이 발생할지 여부를 최종적으로 결정하는 당사자를 식별하는 데 사용됩니다 .
Jess Riedel

3
그것은 당신이 요청하는 사람에 달려 있습니다. 그것이 팀이라면 "푸시 요청"이 더 합리적입니다. 그것이 원격 저장소라면 당신의 절대적 권리입니다.
A77

2
회사의 중앙 개인 Git 서버와 작업 할 때 일반적으로 새 지점을 푸시하고 동료에게 코드 검토 및 병합을 요청할 수 있습니다. 따라서이 워크 플로우에 대한 "풀 요청"은 기술적으로 정확하지 않지만 모든 사람과 GUI 디자이너가 선택한 용어로 밝혀졌습니다.
Sven

88

풀 요청을 보내면 공식 리포지토리 소유자에게 자신의 리포지토리에서 일부 변경 사항을 가져 오도록 요청합니다 (요청). 따라서 "풀 요청".


2
그러나 소유자는 승인 후 git merge를 발행 할 것입니다
Jervie Vitriolo

2
git pull은 페치 및 병합 결합이므로 pull은 이미 병합을 의미합니다.
Xiong Chiamiov

37

tl; dr 내가 푸시를 할 수 없기 때문에, 나는 repo 소유자에게 멋지게 요청을 할 것입니다.


누가 저장소에 코드를 푸시 할 수 있습니까?

누군가 (아마도 악하거나 교육받지 못하거나 알 수없는) 사람이 와서 여기에 말할 수 있다면 나는 이것을 마스터 지사로 밀고 모든 코드 HAHAHA를 엉망으로 만들었습니다! ?

분명히 당신은 그가 그렇게하기를 원하지 않습니다. 기본적으로 안전망이 설정되어 있으므로 아무도 리포지토리에 푸시 할 수 없습니다. 당신은 할 수 공동 작업자로 다른 사람을 설정 한 후 그들이 밀어 수 있습니다. 당신은 당신이 신뢰하는 사람들에게 그러한 접근권을 줄 것이다.

따라서 공동 작업자가 아니고 푸시하려고하면 권한이 없음을 나타내는 오류가 발생합니다.


그렇다면 다른 개발자가 어떻게 리포지토리에 푸시 할 수 있습니까?
모든 사람에게 액세스 권한을 부여 할 수는 없지만 다른 사람들 에게 ' 이 코드를 저장소로 가져 오도록 리포 소유자에게 요청'할 수 있도록 콘센트 / 입구 지점 을 제공하려고합니다 . 리포지토리에 액세스 할 수있게하면 포크로 포크를 만들 수 있습니다. 변경 사항을 자신의 포크푸시하십시오 . 일단 자신의 원격 저장소에 있으면 :

그들은 포크에서 끌어 오기 요청 을하고 업스트림 리포지토리 소유자는 직접 끌어 올 수없는 풀 요청을 병합할지 여부를 결정합니다.


또한 반 관련 질문을 읽는 것이 좋습니다 .git push에서 정확히 어떻게됩니까? 왜 git push가 git merge처럼 간주되지 않습니까?


4
푸시와 풀간에 권한 차이가 있다는 것을 모르는 사람들에게는이 대답이 의미가 있습니다.
buddie

29

풀 요청 : 나는 당신에게 내 것을 당겨 요청 합니다 .


7
나는 사용자가 내 관점에서 그것을 볼 때 "나는 그것을 당신에게 푸시하도록 요청합니까?" I >>> You -당신은 같은 맥락에서 두 번의 참조 점을 바꾸고 있습니다.I >>>> You <<<< Mine
Marin

1
이 답변이 가장 적합합니다.
shivams

쉬운 peezy 레몬 squeezy
Ivan

나는 당신에게 내 것을 끌어달라고 요청합니다 ..... 어디서 ??? 이것이 원래 프로젝트의 포크에서 나온 것임을 이해하고 있습니까? 또는 로컬 사본에서?
간사이 로봇

5

다른 사람의 저장소에 무언가를 넣고 싶습니다.

본인은 해당 문제에 대해 밀거나 당길 수있는 권한이 없습니다.

소유자 / 협력자에게는 권한이 있습니다. 그들은 밀고 당길 수 있습니다. 밀 수 없습니다.

그래서 나는 그들에게 나에게서 당기기를 수행하도록 요청합니다. 이것은 간접적으로 그들이 내 푸시를 수락하도록 요청하고 있음을 의미합니다.

따라서 푸시 요청이 없습니다. 당김 만. 그리고 푸시 수락.

따라서 '풀'요청입니다. '푸시'요청이 아닙니다.


4

이러한 조치의 핵심은 "요청"이라는 단어입니다. 당신은 또한 "나는 당신이 내 일을하도록 요청했습니다, 당신은 받아들입니까?"라고 말하는 것으로 생각할 수 있습니다. - "풀 요청".

처음에는 약간 혼란 스럽지만 결국 의미가 있습니다.


1

이것을 더 잘 이해하고 영원히 기억하려면 그림을 그려야합니다.

큰 리빙 트리를 {저장소로} 그림을 그려보십시오. 트리는 분기를 밀어 넣거나 새 파트를 추가하기에 너무 튼튼합니다 (새 분기를 만들거나 코드를 푸시하는 것). 대신 트리에 분기를 트렁크로 가져 오도록 요청하거나 당신에게서 변화.

"풀 요청"이라는 용어는 분산 특성에서 비롯됩니다. 중앙 저장소 (예 : Subversion)에서와 같이 변경 사항을 저장소로 푸시하는 대신 변경 사항을 별도로 게시하고 관리자에게 변경 사항을 가져 오도록 요청합니다. 그러면 관리자는 변경 사항을 살펴보고 풀을 수행 할 수 있습니다.

그래서 당신은 기본적으로 당신이 기여하고자하는 레포에 대한 쓰기 권한을 가진 사람들을 "요청"하고, 당신의 레포에서 "풀"합니다.

풀 요청을 통해 GitHub의 리포지토리에있는 브랜치에 푸시 한 변경 사항을 다른 사람에게 알릴 수 있습니다. 풀 요청이 열리면 변경 사항이 기본 지점으로 병합되기 전에 공동 작업자와 잠재적 변경 사항을 논의하고 검토하고 후속 커밋을 추가 할 수 있습니다. Github 설명


0

내가 생각하는 원하기 때문에 나는 그것의 바보 같은 용어를 생각 나는 당신에게 PUSH 뭔가를 원하고 나의 addings을 끌어 다른 사람을 물어 반대의 반대를 생각하지. 따라서 PUSH REQ로 변경해야합니다. 내가 활동적인 부분이기 때문에. 화살표는 다른 쪽 끝에있는 구피가 아니라 저와 함께 시작합니다. 이모.


0

이런 식으로 생각하십시오. 로컬 저장소 원격 저장소

  • 로컬에서 푸시 할 때 . ( git push) - 즉, 원격 저장소입니다 당기면 당신에게서 코드를 (로컬).

무언가를 요청하고 있습니다. 자네에게 물어봐

  • 원격 저장소 풀링 코드 를 원하십니까 ? - 풀 요청.

푸시 요청을 할 수 없다는 것을 구별하는 것이 중요하다고 생각합니다. 푸시 할 수 있고 요청하면 요청이 아니며 마스터와 병합됩니다. git hub 저장소에 대한 pull 요청은 코드 병합을 요청하는 것입니다.
James

나는 이것을 단지 예로 사용합니다. 물론 Github는 코드를 푸시 할 수 있습니다. 그러나 나는 대답을 편집 할 것이다.
Jin Lim

0

이 답변의 대부분 이 '풀 요청'이란 무엇입니까? 또는 '푸시 요청'은 무엇을 의미합니까? OP의 질문이 아니라 푸시 요청이 아닌 풀 요청이라고 불리는 이유무엇 입니까?

일반적으로 이러한 종류의 질문 대체는 허용되지만이 경우 OP가 이러한 대체 질문에 대한 답변을 알고 있으므로 대답하는 데 큰 도움이되지 않습니다.

GitHub의 용어를 만든 사람들 만이 확실하게 알고 있습니다. 그러나이 용어 선택은 "외부에서 저장소로 들어오는 변경"현상과 관련하여 다음과 같은 관점을 반영하는 것 같습니다 . 관리자는 조치를 수행합니다 (풀) .

그러나 요청도 조치이며 해당 조치의 수행자는 유지 보수자가 아니라 제출자 (보다 많은 조치를 수행 한 작업자)입니다. 따라서 '풀 요청'이라는 용어 는 에이전트가 누구인지에 대해 혼란을 야기 합니다. 궁극적으로 혼란은 요청의 재귀 적 특성으로 인해 발생합니다. 요청은 기본 에이전트의 조치와 ​​두 번째 에이전트의 향후 조치 요청입니다.

상황은 "우리의 집을 짓기 위해 다른 사람에게 돈을 지불했다"대신에 "우리의 집을 지었다"와 같은 현재 일반적인 언어 구성과 상당히 유사하다. 관리 사회적 역할을 수행하는 보조 에이전트.

이로부터 용어 선택의 이유 는 관리 작업이 일류 노동이라는 관점을 정당화 하는 것이라고 결론 지을 수있다 . 또한 이 용어 선택에 대한 혼란 의 이유 는 비 관리자 근로자가 자연스럽게 다른 관점을 가지고 있기 때문일 수 있습니다.

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