นี่เป็นวิธีหนึ่งในการ "ยกเลิกการติดตาม" ไฟล์ใด ๆ ที่จะถูกละเว้นเป็นอย่างอื่นภายใต้ชุดรูปแบบการยกเว้นปัจจุบัน:
(GIT_INDEX_FILE=some-non-existent-file \
git ls-files --exclude-standard --others --directory --ignored -z) |
xargs -0 git rm --cached -r --ignore-unmatch --
สิ่งนี้จะทำให้ไฟล์ในไดเรกทอรีทำงานของคุณ แต่ลบออกจากดัชนี
เคล็ดลับที่ใช้ในที่นี้คือการจัดทำไฟล์ดัชนีที่ไม่มีอยู่ให้กับ git ls-files เพื่อให้คิดว่าไม่มีไฟล์ที่ถูกติดตาม รหัสเชลล์ด้านบนจะถามถึงไฟล์ทั้งหมดที่จะถูกละเว้นหากดัชนีนั้นว่างเปล่าแล้วลบออกจากดัชนีจริงด้วย git rm
หลังจากไฟล์นั้น“ ไม่ได้ติดตาม” ให้ใช้สถานะ git เพื่อตรวจสอบว่าไม่มีสิ่งใดที่สำคัญถูกลบออก (ถ้าเป็นเช่นนั้นให้ปรับรูปแบบการแยกของคุณและใช้ git reset - พา ธ เพื่อกู้คืนรายการดัชนีที่ลบออก) จากนั้นทำการคอมมิชชันใหม่ที่ทำให้ "crud" หลุดออกไป
“ crud” จะยังคงอยู่ในความมุ่งมั่นเก่า ๆ คุณสามารถใช้ git filter-branch เพื่อสร้างเวอร์ชันเก่าของคอมมิชชันถ้าคุณต้องการประวัติที่สะอาด (จริงๆแล้วการใช้ git filter-branch จะ "เขียนประวัติใหม่" ดังนั้นจึงไม่ควรดำเนินการเบา ๆ หากคุณมีผู้ทำงานร่วมกันที่ดึง ประวัติการกระทำความผิดใด ๆ ของคุณหลังจากการแนะนำ“ crud” เป็นครั้งแรก)
git rm --cached
ไดเรกทอรีทั้งหมดด้วย-r
ตัวเลือกถ้ามันมีประโยชน์