ทำไม 'คำขอการดึง' ของคอมไพล์จึงไม่เรียกว่า


451

คำศัพท์ที่ใช้ในการรวมสาขากับที่เก็บอย่างเป็นทางการคือ 'คำขอดึง' นี่คือความสับสนตามที่ปรากฏว่าฉันขอให้ผลักดันการเปลี่ยนแปลงของฉันไปยังที่เก็บอย่างเป็นทางการ

เหตุใดจึงเรียกว่าคำขอดึงและไม่ใช่คำขอส่งข้อมูล


45
รูปภาพต้นไม้ใหญ่ที่มีชีวิต ต้นไม้นั้นแข็งแรงเกินกว่าที่คุณจะดันกิ่งไม้เข้าไปได้ แต่คุณต้องขอให้ต้นไม้ดึงกิ่งไม้เข้าไปในลำต้นเพื่อเสริมความแข็งแกร่ง
ลุค


2
หากมีการใช้พื้นที่เก็บข้อมูลระยะไกลเช่น gitihub git pushหนึ่งของคำสั่งสุดท้ายที่ผู้ดูแลจะดำเนินการในการปฏิบัติตามการร้องขอผ่านทางบรรทัดคำสั่ง ให้ฉันบอกว่ามันทั้งหมด ... (ใช่พวกเขาอาจออกดึงคอมไพล์คอมไพล์แล้วผลักดัน แต่ดันถูกถามและเป็นสิ่งที่ในที่สุดได้รับการทำ)
ebyrob

62
GitLab merge requestsเรียกพวกเขา IMHO ชัดเจนยิ่งขึ้น :)
U007D

คำตอบ:


377

หากคุณมีการเปลี่ยนแปลงรหัสในที่เก็บของคุณและต้องการย้ายไปยังที่เก็บเป้าหมายแล้ว:

  • "Push" คือการบังคับให้คุณเปลี่ยนแปลงที่อยู่ในที่เก็บเป้าหมาย ( git push)
  • "ดึง" เป็นพื้นที่เก็บข้อมูลเป้าหมายคว้าการเปลี่ยนแปลงของคุณที่จะปรากฏที่นั่น ( git pullจาก repo อื่น ๆ )

"คำขอการดึง" คือคุณขอพื้นที่เก็บข้อมูลเป้าหมายเพื่อรับการเปลี่ยนแปลงของคุณ

"คำขอพุช" จะเป็นพื้นที่เก็บข้อมูลเป้าหมายที่ขอให้คุณผลักดันการเปลี่ยนแปลงของคุณ


21
นี่เป็นปัญหาสำหรับฉันด้วยการตั้งชื่อ: D & u เพิ่งทำให้เข้าใจได้ง่ายขึ้นมาก คิดว่ามันเป็นวิธีเดียวกันกับที่สกุลเงินซื้อ / ขายในธนาคารทำงาน
nsuinteger

ฉันคิดว่าคุณต้องการนิยามคำว่า "ดึง" ของคุณใหม่เนื่องจากมีความสับสนเกี่ยวกับ "พื้นที่เก็บข้อมูลเป้าหมาย", "การเปลี่ยนแปลงของคุณ" คุณอาจต้องการพูดว่า "ที่เก็บข้อมูลของคุณกำลังเปลี่ยนแปลงจากที่เก็บข้อมูลเป้าหมาย" หรือไม่
MrPisarik

9
แนวคิดหลักคือคำศัพท์ "push" / "pull" ใช้เพื่อระบุกลุ่มที่ตัดสินใจว่าการถ่ายโอนนั้นเกิดขึ้นในท้ายที่สุดไม่ใช่ฝ่ายที่สร้างข้อมูลที่ถ่ายโอน
Jess Riedel

3
มันขึ้นอยู่กับว่าคุณเป็นใครขอถ้าเป็นทีมของคุณ "คำขอผลักดัน" ทำให้รู้สึกมากขึ้นถ้ามันเป็นพื้นที่เก็บข้อมูลระยะไกลของคุณถูกต้องอย่างแน่นอน
A77

2
เมื่อทำงานกับเซิร์ฟเวอร์ Git ส่วนกลางที่เป็นส่วนตัวใน บริษัท โดยปกติแล้วคุณจะสามารถผลักดันสาขาใหม่เข้ามาและขอให้มีการตรวจสอบรหัสและผสานจากเพื่อนร่วมงานของคุณ ดังนั้น "คำขอการดึง" สำหรับเวิร์กโฟลว์นี้ไม่ถูกต้องทางเทคนิค แต่กลายเป็นคำที่เลือกโดยทุกคนและนักออกแบบ GUI
Sven

88

เมื่อคุณส่งคำขอดึงคุณกำลังขอ (ขอ) เจ้าของ repo อย่างเป็นทางการเพื่อดึงการเปลี่ยนแปลงบางอย่างจาก repo ของคุณเอง ดังนั้น "คำขอดึง"


2
แต่เจ้าของจะออกใบอนุญาตคอมไพล์หลังจากอนุมัติแล้ว
Jervie Vitriolo

2
การดึงคอมไพล์เป็นการดึงข้อมูลและผสานรวมกันดังนั้นการดึงหมายถึงการผสาน
Xiong Chiamiov

37

tl; dr เนื่องจากฉันไม่ได้รับอนุญาตให้ส่งฉันจะขอให้เจ้าของ repo เป็นอย่างดีดังนั้นพวกเขาจึงตัดสินใจดึง


ใครสามารถส่งรหัสไปยังที่เก็บได้

หากใคร (อาจเป็นความชั่วร้ายหรือไร้การศึกษาหรือไม่ทราบ) สามารถมาและพูดที่นี่ฉันแค่ผลักมันไปที่สาขาหลักของคุณและทำให้รหัสของคุณยุ่งเหยิงฮ่าฮ่าฮ่า! ?

แน่นอนคุณไม่ต้องการให้เขาทำอย่างนั้น โดยค่าเริ่มต้นตาข่ายความปลอดภัยจะถูกตั้งค่าเพื่อให้ไม่มีใครสามารถผลักดัน repo ของคุณ คุณสามารถ ตั้งค่าผู้อื่นเป็นผู้ทำงานร่วมกันจากนั้นพวกเขาสามารถผลักดัน คุณจะให้สิทธิ์การเข้าถึงกับคนที่คุณไว้วางใจ

ดังนั้นหากคุณไม่ใช่ผู้ทำงานร่วมกันและพยายามผลักดันคุณจะได้รับข้อผิดพลาดบางอย่างที่ระบุว่าคุณไม่ได้รับอนุญาต


ดังนั้นนักพัฒนาซอฟต์แวร์อื่น ๆ สามารถผลักดันไปยัง repo ที่พวกเขาไม่ได้รับอนุญาตให้ผลักดันได้อย่างไร
คุณไม่สามารถให้สิทธิ์การเข้าถึงกับทุกคนได้ แต่คุณต้องการให้จุดทางออก / จุดเข้ากับคนอื่น ๆเพื่อให้พวกเขาสามารถ 'ขอให้เจ้าของ repo ดึงรหัสนี้ไปยัง repo' ใส่โดยการทำให้ repo สามารถเข้าถึงได้พวกเขาสามารถแยกมัน ... ทำการเปลี่ยนแปลงในทางแยกของตนเอง ผลักดันการเปลี่ยนแปลงของพวกเขาไปทางแยกของตัวเอง เมื่ออยู่ใน repo ระยะไกลของตนเอง:

พวกเขาทำคำขอดึงจากส้อมของพวกเขาและเจ้าของ repo ต้นน้ำ (ซึ่งคุณไม่สามารถผลักดันโดยตรง) จะตัดสินใจว่าจะผสานคำขอดึง


นอกจากนี้คำถามกึ่งที่ฉันแนะนำให้อ่านสิ่งที่เกิดขึ้นในการผลักดันคอมไพล์? ทำไมการกด git จึงไม่ถือว่าเหมือนกับการรวมคอมไพล์


4
สำหรับคนที่ไม่ทราบว่ามีความแตกต่างระหว่างสิทธิ์ในการพุชและดึงคำตอบนี้สมเหตุสมผลมาก
บัดดี้

29

คำขอดึง: ฉันขอให้คุณดึงเหมือง


7
ฉันในฐานะผู้ใช้ดูจากมุมมองของฉันมันควรจะเป็น "ฉันขอที่จะผลักดันให้คุณ?" I >>> You - คุณกำลังเปลี่ยนจุดอ้างอิงสองครั้งในบริบทเดียวกัน ... ไม่ใช่ I >>>> You <<<< Mine
Marin

1
คำตอบนี้เหมาะสมที่สุด
shivams

มะนาวบีบง่าย peezy
Ivan Ivković

ฉันขอให้คุณดึงฉัน ..... จากที่ใด ??? ฉันเข้าใจว่าสิ่งนี้มาจากทางแยกของโครงการดั้งเดิมหรือไม่? หรือจากสำเนาในเครื่อง?
KansaiRobot

5

ฉันต้องการที่จะผลักดันบางสิ่งบางอย่างไปยัง repo ของคนอื่น

ฉันไม่ได้รับอนุญาตให้ผลัก (หรือดึงสำหรับเรื่องนั้น)

เจ้าของ / ผู้ทำงานร่วมกันมีสิทธิ์ พวกเขาสามารถดึงเช่นเดียวกับการผลักดัน ฉันไม่สามารถผลักดัน

ดังนั้นฉันขอให้พวกเขาทำการดึงจากฉัน - ซึ่งทางอ้อมหมายความว่าฉันกำลังขอให้พวกเขายอมรับการผลักดันของฉัน

ดังนั้นไม่ขอให้กด สำหรับดึงเท่านั้น และสำหรับการยอมรับของการผลักดัน

ดังนั้นคำขอ 'ดึง' และไม่ใช่คำขอ 'ดัน'


4

มันเป็นคำว่า "ขอ" ซึ่งเป็นกุญแจสำคัญในการกระทำเหล่านี้ คุณอาจคิดว่าเป็นการพูดว่า "ฉันมีคำขอให้คุณรับงานของฉันคุณยอมรับหรือไม่" - "คำขอดึง"

ตอนแรกมันสับสนเล็กน้อย แต่ก็สมเหตุสมผลแล้วในที่สุด


1

เพื่อให้เข้าใจสิ่งนี้ดีขึ้นและจดจำไว้ตลอดไปคุณต้องนึกภาพ

รูปภาพต้นไม้ใหญ่ที่มีชีวิต {เป็นที่เก็บของคุณ} ต้นไม้มีความทนทานเกินกว่าที่คุณจะดันสาขาเข้าไปหรือเพิ่มส่วนใหม่เข้าไปได้ {เป็นสัญลักษณ์ของการสร้างสาขาใหม่หรือคุณกดรหัสในมัน} แทนคุณต้องขอให้ต้นไม้ดึงกิ่งไม้เข้าไปในลำต้นหรือมี การเปลี่ยนแปลงจากคุณ

คำว่า "คำขอการดึง" มาจากลักษณะการแจกจ่าย แทนที่จะผลักดันการเปลี่ยนแปลงของคุณไปยังที่เก็บข้อมูล (เช่นเดียวกับที่คุณทำกับพื้นที่เก็บข้อมูลส่วนกลางเช่นกับการโค่นล้ม) คุณกำลังเผยแพร่การเปลี่ยนแปลงของคุณแยกต่างหากและขอให้ผู้ดูแลระบบดึงการเปลี่ยนแปลงของคุณ ผู้ดูแลสามารถดูการเปลี่ยนแปลงและทำการดึง

ดังนั้นโดยทั่วไปคุณ "ขอ" คนที่มีการเขียนเข้าถึง repo ที่คุณต้องการมีส่วนร่วมเพื่อ "ดึง" จาก repo ของคุณ

คำขอดึงช่วยให้คุณบอกคนอื่นเกี่ยวกับการเปลี่ยนแปลงที่คุณผลักไปยังสาขาในที่เก็บบน GitHub เมื่อมีการเปิดคำขอดึงคุณสามารถพูดคุยและตรวจสอบการเปลี่ยนแปลงที่อาจเกิดขึ้นกับผู้ทำงานร่วมกันและเพิ่มความมุ่งมั่นในการติดตามก่อนที่การเปลี่ยนแปลงของคุณจะถูกรวมเข้ากับสาขาพื้นฐาน คำอธิบาย Github


0

ฉันคิดว่ามันเป็นคำศัพท์ที่งี่เง่าเพราะฉันต้องการที่จะคิดว่าฉันต้องการที่จะผลักบางสิ่งบางอย่างให้กับคุณและไม่คิดว่าในทางกลับกันขอให้คนอื่นดึงสิ่งที่เพิ่มเติม ดังนั้นควรเปลี่ยนเป็น PUSH REQ ตั้งแต่ฉันเป็นส่วนที่กระตือรือร้น ลูกศรไปทางอื่นที่เริ่มต้นจากฉันและไม่ใช่คนโง่ในท้ายที่สุด IMHO


0

คิดแบบนี้ ที่เก็บในเครื่องกับที่เก็บระยะไกล

  • เมื่อคุณกดจาก Local ( git push) - กล่าวอีกนัยหนึ่งที่เก็บระยะไกลคือการดึงรหัสจากคุณ (ในเครื่อง)

คุณกำลังขออะไรบางอย่าง ดังนั้นถามตัวคุณเอง

  • คุณต้องการพื้นที่เก็บข้อมูลระยะไกลดึงรหัสจากคุณ? - คำขอดึง

ฉันคิดว่ามันเป็นสิ่งสำคัญที่จะทำให้ความแตกต่างที่คุณไม่สามารถส่งคำขอผลักดัน หากคุณสามารถผลักดันและทำเช่นนั้นมันไม่ได้เป็นคำขอมันจะรวมกับต้นแบบ คำขอดึงไปยังที่เก็บฮับ git คือคุณร้องขอให้มีการรวมรหัสของคุณ
James

ฉันแค่ใช้สิ่งนี้เป็นตัวอย่าง แน่นอน Github สามารถกดรหัสได้ แต่ฉันจะแก้ไขคำตอบของฉัน
Jin Lim

0

ฉันกลัวว่าคำตอบส่วนใหญ่ตอบคำถาม'การร้องขอแบบดึง' หมายถึงอะไร หรือ'ผลักดันคำขอ' หมายถึงอะไร ไม่ใช่คำถามของ OP: ทำไมจึงเรียกว่าคำขอดึงและไม่ใช่คำขอพุช

โดยปกติแล้วการเปลี่ยนคำถามประเภทนี้เป็นที่ยอมรับ แต่ในกรณีนี้มันเป็นที่ชัดเจนว่า OP รู้คำตอบสำหรับคำถามการแทนที่เหล่านี้ดังนั้นการตอบคำถามเหล่านี้จึงไม่ค่อยมีประโยชน์

มีเพียงคนที่ GitHub เท่านั้นที่รู้คำนี้อย่างแน่นอน อย่างไรก็ตามดูเหมือนว่าเห็นได้ชัดว่าทางเลือกนี้สะท้อนให้เห็นถึงคำศัพท์บางอย่างเช่นมุมมองต่อไปนี้เกี่ยวกับปรากฏการณ์ของ "การเปลี่ยนแปลงเข้ามาในพื้นที่เก็บข้อมูลจากภายนอก": ผู้ดูแลไม่ดำเนินการ (ดึง)

อย่างไรก็ตามคำขอยังเป็นการกระทำและผู้ดำเนินการนั้นไม่ใช่ผู้ดูแล แต่เป็นผู้ส่ง (ผู้ดำเนินการมากกว่านั้นคืองาน) ดังนั้นคำว่า 'คำขอดึง' สร้างความสับสนเกี่ยวกับผู้ที่เป็นตัวแทน ในที่สุดความสับสนเกิดขึ้นเนื่องจากลักษณะการเรียกซ้ำของคำขอ: การร้องขอเป็นทั้งการกระทำโดยตัวแทนหลักและการร้องขอสำหรับการดำเนินการในอนาคตโดยตัวแทนที่สอง

สถานการณ์ค่อนข้างคล้ายคลึงกับการสร้างภาษาที่ใช้กันทั่วไปในปัจจุบันเช่น "เราสร้างบ้านของเรา" (ใช้แทน "เราจ่ายให้คนอื่นเพื่อสร้างบ้านของเรา") ในความรับผิดชอบสำหรับการดำเนินการหลักนั้นเปลี่ยนจากตัวแทนดั้งเดิมที่ชัดเจน ตัวแทนสำรองที่ปฏิบัติตามบทบาททางสังคมในการจัดการ

หนึ่งอาจสรุปได้จากนี้ว่าเหตุผลในการเลือกที่คำศัพท์ที่มีความถูกต้องตามกฎหมายของมุมมองว่าการทำงานการบริหารจัดการที่เป็นชั้นแรกแรงงาน นอกจากนี้เหตุผลของความสับสนเกี่ยวกับตัวเลือกคำศัพท์นี้อาจเป็นเพราะคนงานที่ไม่ใช่ผู้จัดการมีมุมมองที่แตกต่างกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.