ฉันกลัวว่าบรรทัดแรกของบรรทัดคำสั่งเหล่านั้นถูกลบโดยไม่มีเงื่อนไขจากการทำงานคัดลอกไฟล์ทั้งหมดที่อยู่ในพื้นที่จัดเตรียมของคอมไพล์ ไฟล์ที่สองทำ unstaged ไฟล์ทั้งหมดที่ถูกติดตาม แต่ถูกลบไปแล้ว น่าเสียดายที่นี่หมายความว่าคุณจะสูญเสียการแก้ไขที่ไม่มีข้อผูกมัดใด ๆ กับไฟล์เหล่านั้น
หากคุณต้องการได้รับสำเนาการทำงานของคุณและดัชนีกลับไปที่พวกเขากระทำล่าสุดคุณสามารถ ( อย่างระมัดระวัง ) ใช้คำสั่งต่อไปนี้:
git reset --hard
ฉันพูดว่า "อย่างระมัดระวัง" เนื่องจากgit reset --hard จะกำจัดการเปลี่ยนแปลงที่ไม่มีข้อผูกมัดในสำเนาการทำงานและดัชนีของคุณ อย่างไรก็ตามในสถานการณ์เช่นนี้ดูเหมือนว่าคุณเพียงแค่ต้องการกลับไปสู่สถานะในการกระทำครั้งสุดท้ายของคุณและการเปลี่ยนแปลงที่ไม่มีข้อผูกมัดได้สูญหายไปแล้ว
อัปเดต: ฟังจากความเห็นของคุณเกี่ยวกับคำตอบของแอมเบอร์ที่คุณยังไม่ได้สร้างความมุ่งมั่นใด ๆ (เนื่องจาก HEAD ไม่สามารถแก้ไขได้) ดังนั้นสิ่งนี้จะไม่ช่วยฉันกลัว
สำหรับวิธีท่อเหล่านั้นทำงาน: git ls-files -zและการส่งออกทั้งรายชื่อไฟล์ที่คั่นด้วยไบต์git diff --name-only --diff-filter=D -z 0(สิ่งนี้มีประโยชน์เนื่องจากไม่เหมือนกับ newlines 0ไบต์รับประกันได้ว่าจะไม่เกิดขึ้นในชื่อไฟล์บนระบบที่เหมือน Unix) โปรแกรมนี้xargsสร้างบรรทัดคำสั่งจากอินพุตมาตรฐานโดยค่าเริ่มต้นจากการรับบรรทัดจากอินพุตมาตรฐานและเพิ่มไปยังจุดสิ้นสุด ของบรรทัดคำสั่ง -0ตัวเลือกว่าจะคาดหวังว่าเข้ามาตรฐานโดยแยกจากกันโดย0ไบต์ xargsอาจเรียกใช้คำสั่งหลาย ๆ ครั้งเพื่อใช้พารามิเตอร์ทั้งหมดจากอินพุตมาตรฐานทำให้แน่ใจว่าบรรทัดคำสั่งไม่ยาวเกินไป
ตัวอย่างง่ายๆหากคุณมีไฟล์ชื่อtest.txtมีเนื้อหาดังต่อไปนี้:
hello
goodbye
hello again
... จากนั้นคำสั่งxargs echo whatever < test.txtจะเรียกใช้คำสั่ง:
echo whatever hello goodbye hello again
rm -fไม่ใช่คำสั่ง git และไม่มี--cachedตัวเลือก ไฟล์ในเครื่องของคุณถูกลบก่อนที่คุณจะดำเนินการgit rmดังนั้นฉันไม่คิดว่าคุณจะโทษความผิดgit rmใด ๆ