อะไรคือความแตกต่างระหว่าง "git fetch origin" และ "git remote update origin"


115

ในการตอบคำถามเกี่ยวกับการดึงคอมมิตทีละรายการจากที่เก็บ gitฉันขอแนะนำให้ใช้git remote updateแทนgit fetch. ฉันอ่านทั้งสองหน้าแล้ว แต่ไม่สามารถพูดได้ว่าฉันเข้าใจทั้งหมด

ใครช่วยอธิบายวิธีการgit fetch originและget remote update originพฤติกรรมที่แตกต่างกันให้ฉันฟังได้ไหม


คำตอบ:


133

มันไม่สร้างความแตกต่างเมื่อใช้เช่นนี้

remote updateเป็นคำสั่งระดับสูงมาก - รองรับรีโมตแบบจัดกลุ่ม ( remotes.<group> = <list>) และอัปเดตรีโมตทั้งหมด (ยกเว้นที่มีการremote.<name>.skipDefaultUpdateตั้งค่า) แต่ไม่ใช่ตัวเลือกเฉพาะใด ๆ ของการดึงข้อมูล แม้ว่าภายใต้ประทุนจะทำสิ่งเดียวกันกับการดึงข้อมูลด้วยตัวเลือกเริ่มต้น

คำตอบที่แนะนำremote updateแทนที่จะใช้ git fetch นั้นแนะนำโดยไม่ต้องใช้ชื่อระยะไกลเพียงเพื่อประโยชน์ในการดึงข้อมูลทั้งหมดไม่ใช่แค่ชื่อที่เป็นอาร์กิวเมนต์ ซึ่งเทียบเท่ากับgit fetch --all.

ฉันควรเพิ่มข้อแม้ที่การดึงข้อมูลและการอัปเดตระยะไกลไม่ได้ใช้ codepath เดียวกันจนถึง v1.6.6.1 (เผยแพร่เมื่อ 23 ธันวาคม 2552) แม้ว่าก่อนหน้านั้นพวกเขาจะทำสิ่งเดียวกันเป็นหลักเพียงแค่ใช้รหัสที่แตกต่างกัน (อาจจะทำงานแตกต่างกันเล็กน้อยในกรณีมุม แต่ฉันไม่สามารถคิดอะไรออกจากหัวของฉันได้)


1
น่าสนใจมาก. +1 หากคุณดูบันทึกประจำรุ่นของ Git (ซึ่งฉันได้รวบรวมไว้ที่นี่: pastebin.com/LNhRhQS3 ) ดูเหมือนว่าจะมีเพียง 1.7.0 (หลังจาก 1.6.6.2) เท่านั้นที่อนุญาตให้ใช้ " git fetch --all" แทน " git remote update" ได้
VonC

อ่าฉันไม่ได้ตรวจสอบจริงๆตอนที่fetch --allเข้าไปฉันทำทั้งหมดนี้โดยการเปลี่ยนแปลงของgit log --grep=...และgit describe --containsใน git.git clone ของฉัน
Cascabel

หืมมมดีว่าแปลก - กระทำ 9c4a036b คือ "สอนตัวเลือก --all ที่ 'คอมไพล์เรียก'" และ Git อธิบาย --contains v1.6.6.1~1^2~9ให้ (รุ่นเดียวกับการเปลี่ยนแปลงการอัปเดตระยะไกลที่ฉันพูดถึงในคำตอบของฉันอัปเดตเพื่อเพิ่มเวอร์ชันรองลงมา) บางทีมันอาจจะสายไปแล้ว?
Cascabel

@Jefromi: วิธีที่ดีในการขุดข้อมูลนั้นออกมา แต่ฉันชอบที่จะดูบันทึกประจำรุ่นก่อนและรู้สึกผิดหวังที่ไม่มีหน้าเดียวสำหรับบันทึกประจำรุ่นทั้งหมดดังนั้นการคัดลอกวางเล็กน้อยใน pastebin
VonC

@Jefromi: ใช่เลย ... ตอนนี้ฉันต้องหาวิธีรวบรวม "มีอะไรทำอาหารใน Git" เพื่อดูว่าทำไมการกระทำ 9c4a036b ถึงไม่ทำในรุ่นอย่างเป็นทางการก่อน 1.7;)
VonC
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.