Git - ลบไฟล์บางไฟล์ในเครื่องฉันจะเอาไฟล์เหล่านั้นจากที่เก็บระยะไกลได้อย่างไร


110

ฉันได้ลบไฟล์บางไฟล์บนพีซีของฉันแล้วฉันจะดาวน์โหลดอีกครั้งได้อย่างไร

Pull กล่าวว่า: "ทันสมัยอยู่แล้ว"


1
คุณไม่จำเป็นต้อง "ดาวน์โหลดอีกครั้ง" เนื่องจากประวัติที่เก็บทั้งหมดมีอยู่ในเครื่องเมื่อคุณใช้ Git
cdhowie

คุณรู้วิธีรับพวกเขาจากท้องถิ่นหรือไม่?
Charlie Parker

คำตอบ:


164

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

หากคุณยังไม่ได้ทำการลบให้ตรวจสอบไฟล์จากคอมมิตปัจจุบันของคุณ:

git checkout HEAD <path>

หากคุณได้ทำการลบคุณต้องตรวจสอบไฟล์จากคอมมิตที่มีอยู่ น่าจะเป็นการกระทำก่อนหน้านี้:

git checkout HEAD^ <path>

แต่ถ้ามันnผ่านมาแล้วให้ใช้HEAD~nหรือเพียงแค่เริ่มทำงานgitkให้ค้นหา SHA1 ของคอมมิตที่เหมาะสมแล้ววางลงใน


2
เช่นเดียวกับความคิดเห็นด้านข้างสิ่งนี้ยังใช้ได้กับไดเร็กทอรีแบบเต็มไม่ใช่พิเศษหรือเฉพาะสำหรับไฟล์เดียว (ใช้งานได้เมื่อฉันพยายามอย่างน้อยที่สุด) ขอบคุณ btw
Charlie Parker

5
NB <path>เป็นข้อบังคับแม้ว่าจะเป็นเพียง.จุดสำหรับผบ. ปัจจุบันก็ตาม แต่ "สาขา" ( HEADในตัวอย่างด้านบน) เป็นทางเลือก เช่นเดียวกับคำสั่ง Git จำนวนมากผลลัพธ์และความช่วยเหลือก็ไม่มีประโยชน์
MarkHu

39

git checkout filename

git reset --hard อาจทำเคล็ดลับได้เช่นกัน


9
คำเตือนในการใช้git reset --hardวิธีนี้เนื่องจากจะเปลี่ยนต้นไม้ทั้งหมดกลับไปที่ตำแหน่งที่คุณใส่ HEAD / HEAD ^ / HEAD ~ n และมันจะทำโดยไม่มีอคติและอาจสูญเสียการกระทำจำนวนมาก ...
g19fanatic

ชื่อไฟล์ git checkout คือคำตอบสำหรับฉัน :)
Ruub

ชื่อไฟล์ git checkout สร้างไฟล์เปล่า
mrek

วางไว้ในโฟลเดอร์ที่ต้องการและgit checkount .ทำงานได้อย่างมีเสน่ห์!
hzitoun

21

หากคุณลบไฟล์หลายไฟล์ในเครื่อง แต่ไม่ได้คอมมิตคุณสามารถบังคับชำระเงินได้

$ git checkout -f HEAD

ดังที่เราเห็นจากผลลัพธ์ "เป็นปัจจุบันอยู่แล้ว" คนที่ถามคำถามนี้ไม่ได้ทำอะไรเลย คุณควรระบุว่า git checkout -f HEAD เป็นอันตรายหรือไม่? เนื่องจากอาจยกเลิกการเปลี่ยนแปลงในเครื่องที่ไม่ได้รับการยืนยัน (การกู้คืนไฟล์ก่อนหน้านี้เป็นผลลัพธ์ที่เป็นบวกทำให้สูญเสียการเปลี่ยนแปลงในไฟล์ที่แก้ไขไปเป็นลบ)
Lionel Trebuchon

15

หากคุณลบไฟล์หลายไฟล์ในเครื่องและไม่ยอมรับการเปลี่ยนแปลงให้ไปที่พา ธ ที่เก็บในเครื่องของคุณเปิด git เชลล์และพิมพ์

$ git checkout HEAD .

ไฟล์ที่ถูกลบทั้งหมดก่อนคอมมิตสุดท้ายจะถูกกู้คืน

กำลังเพิ่ม "." จะกู้คืนไฟล์ที่ถูกลบทั้งหมดในที่เก็บปัจจุบันไปยังพา ธ ตามลำดับ

สำหรับรายละเอียดเพิ่มเติมเช็คเอาต์เอกสาร


2

คุณต้องตรวจสอบเวอร์ชันก่อนหน้าก่อนที่คุณจะลบไฟล์ ลองgit checkout HEAD^ชำระเงินการแก้ไขครั้งล่าสุด


0

นอกจากนี้ฉันเพิ่มเพื่อทำตามขั้นตอนต่อไปนี้เพื่อให้ git repo เชื่อมโยงกับ IDE ได้อย่างถูกต้อง:

 $ git reset <commit #>

 $ git checkout <file/path>

หวังว่านี่จะเป็นประโยชน์ !!

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