ความแตกต่างระหว่างต้นกำเนิดดึง git และต้นกำเนิดดึง git / ต้นแบบ


283

ความแตกต่างระหว่างgit pull origin masterและgit pull origin/masterคืออะไร?


1
calmh สวยมากได้มันปกคลุม git pull origin/masterแต่ไม่ใช่คำตอบคือการที่คุณจะไม่เคยทำ หากคุณต้องการที่จะรวม [ที่เก็บไว้] สาขาที่ห่างไกลใช้เพียงorigin/master git merge origin/master
Cascabel

3
@Jefromi: คุณช่วยอธิบายได้หรือไม่ว่าทำไมมันถึงดีกว่าที่จะทำคอมไพล์ผสานเมื่อเทียบกับ git pull?
Rachel

16
git pullวิธีการตามgit fetch git mergeมันดึงเนื้อหาจากระยะไกลแล้วรวมเข้ากับสาขาปัจจุบันของคุณ แต่origin/masterเป็นสาขาท้องถิ่น (ติดตามสาขาระยะไกล) หากคุณต้องการผสานคุณไม่จำเป็นต้องดึงข้อมูลใด ๆ มันทำให้เข้าใจผิดที่จะพูดgit pull origin/masterเมื่อคุณไม่ได้ดึงข้อมูลจากระยะไกล
Cascabel

ขอบคุณ Jefromi สำหรับข้อมูลที่เป็นประโยชน์ มันช่วยให้เข้าใจแนวคิดที่เรียบง่ายไม่ใช่เรื่องง่าย
Rachel

สำหรับผู้ที่อ่านข้อความนี้และยังสับสนorigin/masterอยู่เป็นสาขาที่จัดเก็บในเครื่องซึ่งแคชสาขาหลักที่รีโมตต้นทาง
iheanyi

คำตอบ:


355

git pull origin masterจะดึงการเปลี่ยนแปลงจากoriginระยะไกลmasterสาขาและผสานเข้ากับสาขาที่เช็คเอาท์ในท้องถิ่น

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

คุณสามารถดูได้ว่าสาขาใดบ้างที่มีgit branchและgit branch -rเพื่อดู "สาขาระยะไกล"


1
ในกรณีที่git pull origin masterมันจะรวมสาขาหลักเสมอให้พูดในสาขาอื่นใน repo ของฉันแล้วทำคำสั่งข้างต้นมันจะปรับปรุงสาขาปัจจุบันของฉันด้วยการเปลี่ยนแปลงระยะไกลกำเนิดหรือสาขาหลักที่มีการเปลี่ยนแปลงหรือไม่
Rachel

4
@calmh: git merge(และดังนั้นgit pull) รวมเข้ากับสาขาปัจจุบันเสมอ หากต้องการรวมกับสาขาอื่นที่ไม่ใช่สาขาปัจจุบันของคุณเพียงตรวจสอบก่อน
Cascabel

2
อืม .. ฉันไม่เห็นว่า 'Origin / master' นั้นแตกต่างจาก 'Origin master' อย่างไร พวกเขาทั้งคู่เป็นสาขาต้นกำเนิด คุณสามารถยกตัวอย่างจริง ๆ เมื่อพวกเขาจะแตกต่างกันอย่างไร
hasen

69
git pull origin/masterอาจเป็นคำสั่งที่ถูกต้องเมื่อสิ่งนี้ถูกเขียน แต่ทุกวันนี้ (git 1.7.10.3) มันล้มเหลวด้วยfatal: 'origin/master' does not appear to be a git repository(ตามที่ควร - pull นั้นจะดึงจากรีโมตเสมอ)
user1338062

3
ทำไมคอมไพล์ถึงสับสน? ดังนั้นเรามีที่เก็บทั้งหมด 4 ที่ถูกต้องใช่ไหม มีพื้นที่เก็บข้อมูลระยะไกล (1) (2) พื้นที่เก็บข้อมูลท้องถิ่น (3) พื้นที่เก็บข้อมูลระยะ (4) แหล่งกำเนิด / ต้นแบบ aka ระยะไกลในพื้นที่หรือไม่ ทำไม git ถึงมีที่เก็บ # 4 อยู่เลย
Mugen

3

git pull origin masterจะดึงการเปลี่ยนแปลงทั้งหมดจากสาขาหลักของรีโมตและจะรวมเข้าไปในเครื่องของคุณเรามักจะไม่ใช้ git pull origin / master เราสามารถทำสิ่งเดียวกันได้โดยgit merge origin/masterจะรวมการเปลี่ยนแปลงทั้งหมดจาก "cached copy" ของ สาขาต้นแบบของแหล่งกำเนิดลงในสาขาท้องถิ่นของคุณในกรณีของฉันgit pull origin/masterคือการโยนข้อผิดพลาด


1

git pull= git fetch+git merge origin/branch

git pullและgit pull origin branchแตกต่างกันเพียงอย่างเดียวในส่วนหลังจะ "อัปเดต" ต้นกำเนิด / สาขาเท่านั้นและไม่ใช่ต้นกำเนิด / * git pullทั้งหมด

git pull origin/branchจะไม่ทำงานเพราะพยายามทำสิ่งgit fetch origin/branchที่ไม่ถูกต้อง

คำถามที่เกี่ยวข้อง: git fetch + git merge origin / master vs git pull origin / master

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