ฉันคิดว่าคุณอาจสับสนกับแนวคิดของดัชนีตามที่@CB Bailey แสดงความคิดเห็น:
พื้นที่การแสดงละครคือดัชนี
คุณสามารถพิจารณาการจัดเตรียมไดเรกทอรีและดัชนีแบบเดียวกัน
ดังนั้นเช่นเดียวกับคำตอบของ @Tim Heniganฉันเดาว่า:
คุณเพียงแค่ต้องการ "เลิกทำ" สิ่งgit add
ที่ทำกับไฟล์นั้น
นี่คือคำตอบของฉัน:
โดยทั่วไปมีสองวิธีในการยกเลิกการดำเนินการตามขั้นตอนตามคำตอบอื่น ๆ ที่กล่าวถึงแล้ว:
git reset HEAD <file>
และ
git rm --cached <file>
แต่ความแตกต่างคืออะไร?
สมมติไฟล์ที่ได้รับการจัดฉากและอยู่ในไดเรกทอรีการทำงานมากเกินไป, การใช้งานgit rm --cached <file>
ถ้าคุณต้องการที่จะลบออกจากการแสดงละครไดเรกทอรีและเก็บไฟล์ในไดเรกทอรีการทำงาน แต่ขอให้สังเกตว่าการดำเนินการนี้จะไม่เพียง แต่ลบไฟล์ออกจากไดเรกทอรีการจัดเตรียมแต่ยังทำเครื่องหมายไฟล์เช่นเดียวกับdeleted
ในการจัดเตรียมไดเรกทอรีถ้าคุณใช้
git status
หลังจากการดำเนินการนี้คุณจะเห็นสิ่งนี้:
deleted: <file>
มันเป็นบันทึกของการลบไฟล์จากไดเรกทอรีการแสดงละคร หากคุณไม่ต้องการเก็บบันทึกนั้นและเพียงต้องการยกเลิกการดำเนินการขั้นตอนก่อนหน้าของไฟล์ให้ใช้git reset HEAD <file>
แทน
-------- สิ้นสุดคำตอบ --------
PS: ฉันสังเกตเห็นบางคำตอบที่กล่าวถึง:
git checkout -- <file>
คำสั่งนี้มีไว้สำหรับสถานการณ์เมื่อไฟล์ที่ได้รับการจัดฉากแต่ไฟล์ที่ได้รับการปรับเปลี่ยนในไดเรกทอรีการทำงานหลังจากที่มันถูกจัดฉากให้ใช้การดำเนินการนี้จะเรียกคืนไฟล์ในไดเรกทอรีการทำงานจากไดเรกทอรีการแสดงละคร กล่าวอีกนัยหนึ่งหลังจากการดำเนินการนี้การเปลี่ยนแปลงจะเกิดขึ้นในไดเรกทอรีทำงานไม่ใช่ไดเรกทอรีชั่วคราว