เราสามารถตั้งค่าเริ่มต้น Git เพื่อดึงแท็กทั้งหมดในระหว่างการดึงจากระยะไกลได้หรือไม่?


154

ขณะนี้ฉันมีการตั้งค่าระยะไกลคอมไพล์ดังนี้:

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*

เมื่อฉันออกgit pullโทสาขาหัวหน้ารีโมตทั้งหมดจะถูกดึงไปยังรีโมท / อัปสตรีมจากนั้นรีโมต / อัปสตรีม / มาสเตอร์จะถูกรวมเข้ากับมาสเตอร์ แท็กใด ๆ ที่สามารถเข้าถึงได้จะถูกดึงในเวลาเดียวกันซึ่งสะดวกมาก

ฉันต้องการgit pullดึงแท็กทั้งหมดจากระยะไกลเพิ่มเติมไม่ใช่เฉพาะแท็กที่เข้าถึงได้โดยตรงจากหัว ฉันพยายามตั้งค่าtagopt == --tagsแต่แรกพบว่าสิ่งนี้ทำให้แท็กเท่านั้นที่จะดึงข้อมูลและทำให้ทุกอย่างพัง (Junio ​​ยังบอกด้วยว่ามันเป็นการกำหนดค่าผิดพลาดที่น่ากลัว )

มีวิธีในการgit pullดึงข้อมูลแท็กระยะไกลทั้งหมดเป็นค่าเริ่มต้นนอกเหนือจากส่วนหัวระยะไกลหรือไม่


1
คำเตือนสำหรับตัวเอง: ตรวจสอบให้แน่ใจว่าคุณได้ผลักแท็กก่อนจริง ๆ (ไม่ทำงานโดยอัตโนมัติ): git push origin <tag_name>
Hafenkranich

การใช้tagoptโซลูชันไม่ใช่การกำหนดค่าที่ผิดพลาดอีกต่อไป ตั้งแต่ 1.9 / 2.0 (ไตรมาสที่ 1 ปี 2014) การทำเช่นนี้จะดึงแท็กทั้งหมดนอกเหนือจากการดึงข้อมูลตามปกติ
mgiuffrida

คำตอบ:


95

คุณควรจะสามารถทำได้โดยเพิ่ม refspec สำหรับแท็กในการกำหนดค่าท้องถิ่นของคุณ รูปธรรม

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*
    fetch = +refs/tags/*:refs/tags/*

5
อ้าฉันไม่เคยรู้เลยว่าคุณมีหลายสายเรียกผมสันนิษฐานว่าคนสุดท้ายจะแทนที่ นั่นเป็นเรื่องที่ดีและชัดเจน
jleahy

1
ระวังการใช้สิ่งนี้กับคอมไพล์ 2.21 ดูapple.stackexchange.com/questions/352404/…
Vadorequest

306

ง่าย ๆgit fetch --tagsสำหรับฉัน


13
@Fizzix บางทีชื่อควรมีการเปลี่ยนแปลงเพื่อรวม "โดยค่าเริ่มต้น" โพสต์นี้ตอบคำถามของฉัน
Matt Kneiser

2
สิ่งนี้ไม่ได้ผลสำหรับฉัน git ls-remoteฉันสามารถดูแท็กด้วย
dangeroushobo

นี่อาจจะไม่ตอบคำถามที่แน่นอน แต่มันจะตอบคำถามในชื่อและนั่นคือวิธีที่ฉันพบมันผ่านการค้นหาเว็บ
Hubert Grzeskowiak

68

--forceตัวเลือกที่จะเป็นประโยชน์สำหรับสดชื่นแท็กท้องถิ่น ส่วนใหญ่ถ้าคุณมีแท็กลอย:

git fetch --tags --force

ตัวเลือก git pull ยังมี--forceตัวเลือกและคำอธิบายเหมือนกัน:

เมื่อใช้ git fetch กับ <rbranch>: <lbranch> refspec มันจะปฏิเสธที่จะอัปเดต <lbranch> สาขาในท้องที่ยกเว้นสาขา <rbranch> รีโมตแบบรีโมตนั้นจะเป็นผู้สืบทอดของ <lbranch> ตัวเลือกนี้จะแทนที่การตรวจสอบ

แต่ตามเอกสารของ--no-tags:

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

หากข้อความสั่งเริ่มต้นนั้นไม่ใช่ข้อ จำกัด คุณก็สามารถลองได้เช่นกัน

git pull --force

2
git pull --forceไม่รวมgit fetch --tags --force
Geniy

21

สำหรับฉันต่อไปนี้ดูเหมือนจะทำงาน

git pull --tags

การดึงแท็กเท่านั้นคุณอาจหมายถึง: `git fetch --tags '
Yuseferi

git fetch --tagsมีอยู่แล้วคำตอบกับ ฉันต้องการที่จะให้คำตอบทางเลือก pull = fetch + merge ดังนั้นการดึงข้อมูลก็เกิดขึ้นเช่นกัน
Vasantha Ganesh K


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