สิ่งเดียวที่ใช้ได้ผลสำหรับฉันคือการชำระเงิน repo ในโฟลเดอร์อื่น สมมติ repo /home/me/current
ปัจจุบันอยู่ใน
แล้วฉันก็ทำ
git clone /home/me/current /home/me/temp
สิ่งนี้สร้างโคลนแยกต่างหากของ repo in /home/me/temp
ตอนนี้ฉันสามารถไป/home/me/temp
และทำอะไรก็ได้ที่ฉันต้องการ ตัวอย่างเช่น
git reset --hard commit-hash-before-delete
ตอนนี้ฉันสามารถคัดลอกโฟลเดอร์ไฟล์ที่ถูกลบกลับได้
cp -r /home/me/temp/some/deleted/folder /home/me/current/some/deleted/folder
และลบโฟลเดอร์ temp
rm -rf /home/me/temp
ตัวอย่างของ
git checkout -- some/deleted/folder
git checkout -- some/deleted/folder/*
ไม่ทำงาน
$ git checkout -- some/deleted/folder/*
zsh: no matches found: some/deleted/folder/*
$ git checkout -- some/deleted/folder
error: pathspec 'some/deleted/folder' did not match any file(s) known to git.
ตัวอย่างอื่น ๆ เช่น
git reset --hard HEAD
จะทำลายมากกว่าแค่ไฟล์ที่ถูกลบ การเปลี่ยนแปลงอื่น ๆ จะสูญหายไปด้วย
ในทำนองเดียวกัน
git reset --hard some-commit
จะสูญเสียการกระทำใด ๆ หลังจากนั้น some-commit
git status
จะให้คำแนะนำเกี่ยวกับคำสั่งที่จะเรียกใช้