คุณเปลี่ยนกลับเป็นแท็กเฉพาะใน Git ได้อย่างไร


86

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

git revert -bytag "Version 1.0 Revision 1.5"

เป็นไปได้หรือไม่


คุณต้องการ "ย้อนกลับสาขา" (เช่นลบคอมมิต) หรือเพิ่มการคอมมิตใหม่ให้กับสาขาปัจจุบันที่ตั้งค่าสาขาเพื่อให้ไฟล์ทั้งหมดเป็น "วิธีที่พวกเขาอยู่ในการคอมมิตที่กำหนดโดยแท็กนั้น"?
torek

ควรทำงานให้เสร็จแม้ว่าฉันคิดว่าฉันอยากจะเพิ่มข้อผูกพันใหม่ให้กับสาขาปัจจุบันในลักษณะที่คุณอธิบาย
zachd1_618

ในกรณีนั้นให้ใช้git checkout <id> .วิธีการจากคำตอบนี้
torek

คำตอบ:


133

แท็ก Git เป็นเพียงตัวชี้ไปยังการคอมมิต ดังนั้นคุณจึงใช้มันในลักษณะเดียวกับที่คุณทำ HEAD ชื่อสาขาหรือคอมมิต sha แฮช คุณสามารถใช้แท็กกับคำสั่ง git ใด ๆ ที่ยอมรับอาร์กิวเมนต์คอมมิต / แก้ไข คุณสามารถลองใช้git rev-parse tagnameเพื่อแสดงการคอมมิตที่ชี้ไป

ในกรณีของคุณคุณมีทางเลือกอย่างน้อยสองทางนี้:

  1. รีเซ็ตสาขาปัจจุบันเป็นแท็กเฉพาะ:

    git reset --hard tagname
    
  2. สร้างการตอบกลับด้านบนเพื่อให้คุณเข้าสู่สถานะของแท็ก:

    git revert tag
    

สิ่งนี้อาจทำให้เกิดความขัดแย้งหากคุณรวมคอมมิต


30
ฉันคิดว่า "git revert <tag>" จะย้อนกลับการเปลี่ยนแปลงในการคอมมิตที่ติดแท็กแทนที่จะกู้คืนสำเนาการทำงานของคุณไปเป็นเวอร์ชันนั้น
Matt

หากต้องการกำจัดไฟล์ที่ไม่ได้ติดตาม / ไม่ได้แปลงให้ทำตามstackoverflow.com/a/912737/923560
Abdull

3
เช่นเดียวกับที่ @Matt กล่าวว่าคำตอบที่ยอมรับนั้นไม่ถูกต้องเพียงเพราะจะย้อนกลับการเปลี่ยนแปลงในคอมมิตที่ติดแท็กเท่านั้น ทางออกที่ดีที่สุดของคุณคือใช้คอมมิตแฮชและทำตามคำตอบนี้stackoverflow.com/a/4114122/6348485
Swagga Ting

สวัสดีคุณช่วยอธิบายได้ไหมว่า "สร้างการตอบกลับด้านบนเพื่อให้คุณเข้าสู่สถานะของแท็ก:" ฉันไม่รู้ว่ามันหมายถึงอะไรน่าเสียดาย
John Little


1

คุณสามารถใช้ git checkout

ฉันลองวิธีแก้ปัญหาที่ยอมรับ แต่พบข้อผิดพลาด warning: refname '<tagname>' is ambiguous'

แต่เมื่อคำตอบระบุแท็กจะทำงานเหมือนตัวชี้ไปยังการคอมมิตดังนั้นคุณสามารถเช็คเอาต์แท็กได้เช่นเดียวกับที่คุณทำกับแฮชคอมมิต ความแตกต่างเพียงอย่างเดียวคือคุณนำหน้าด้วยtags/:

git checkout tags/<tagname>

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