วิธีลบไฟล์ออกจากดัชนี (= staging area = cache) โดยไม่ลบไฟล์ออกจากระบบไฟล์?
วิธีลบไฟล์ออกจากดัชนี (= staging area = cache) โดยไม่ลบไฟล์ออกจากระบบไฟล์?
คำตอบ:
คุณต้องการ:
git rm --cached [file]
หากคุณไม่ใช้--cachedตัวเลือกนี้จะเป็นการลบออกจากแผนผังการทำงาน git rmปลอดภัยกว่าเล็กน้อยgit resetเนื่องจากคุณจะได้รับการเตือนหากเนื้อหาที่จัดฉากไม่ตรงกับส่วนปลายของสาขาหรือไฟล์บนดิสก์ (ถ้าไม่คุณต้องเพิ่ม--force)
git rm --cachedเพื่อลบออกจาก repo เพิ่มไฟล์หรือไดเรกทอรีที่เกี่ยวข้องใน. gitignore, stage และกระทำตามปกติ พวกเขาจะหายไปจาก repo แต่ยังคงไม่มีใครแตะต้องในต้นไม้ท้องถิ่นของคุณและคุณจะไม่ตรวจสอบพวกเขาอีกครั้งโดยไม่ตั้งใจ
การทำเช่นนี้จะเป็นการสร้าง <file> ให้กับคุณ (โดยไม่ลบหรือแก้ไขไฟล์):
git reset <file>
HEADโปรดทราบว่าคุณไม่ได้มีการระบุ
HEAD!
git reset HEAD <file>
สำหรับการลบไฟล์เฉพาะออกจากดัชนี
และ
git reset HEAD
สำหรับการลบไฟล์ที่จัดทำดัชนีทั้งหมด
ขึ้นอยู่กับเวิร์กโฟลว์ของคุณสิ่งนี้อาจเป็นสิ่งที่คุณต้องการน้อยมากที่มีจุดเล็ก ๆ น้อย ๆ ในการพยายามหาวิธีแก้ปัญหาบรรทัดคำสั่ง
เพียงใช้เครื่องมือที่ใช้ GUI ซึ่งสนับสนุนการจัดการดัชนีตัวอย่างเช่น:
git gui <- ใช้เฟรมเวิร์ก Tk window - สไตล์ที่คล้ายคลึงกับ gitkgit cola <- อินเตอร์เฟส GUI สไตล์ที่ทันสมัยกว่าสิ่งเหล่านี้ช่วยให้คุณสามารถย้ายไฟล์เข้าและออกจากดัชนีโดยการชี้และคลิก พวกเขายังมีการสนับสนุนสำหรับการเลือกและย้ายส่วนของไฟล์ (การเปลี่ยนแปลงแต่ละรายการ) ไปยังและจากดัชนี
วิธีการเกี่ยวกับมุมมองที่แตกต่าง: ถ้าคุณทำผิดพลาดในขณะที่ใช้คำสั่งที่แนะนำอย่างใดอย่างหนึ่งที่ค่อนข้างลับ:
git rm --cached [file]git reset HEAD <file>... คุณมีโอกาสที่แท้จริงในการสูญเสียข้อมูล - หรืออย่างน้อยก็หาได้ยาก ถ้าคุณต้องการจริงๆที่จะทำนี้มีความถี่สูงมากโดยใช้เครื่องมือ GUI ที่มีแนวโน้มที่จะมีความปลอดภัย
จากความคิดเห็นและการโหวตฉันได้ตระหนักว่ามีผู้คนมากมายที่ใช้ดัชนีอยู่ตลอดเวลา ฉันไม่. นี่คือวิธี:
git commit -agit commit (list of files)git commit -aจากนั้นแก้ไขผ่านgit guigit difftool --dir-diff --tool=meldgit commit -aเมื่อฉันต้องการที่จะบันทึกการทำงานของฉันฉันเพียงแค่ทำกระทำที่เต็มไปด้วย เมื่อฉันตอบคำถามนี้มันเป็นเพราะฉันได้ทำ (แปลกใหม่) " เลือกเชอร์รี่ที่ตรงกันข้าม " ซึ่งทำให้ไฟล์ในดัชนีสำหรับคุณ แต่ฉันต้องการที่จะแก้ไขไฟล์ก่อนที่จะกระทำ ฉันลบไฟล์ออกจากดัชนีในขณะที่แก้ไขมันเพื่อให้ diffs ทำงานตามที่ฉันคุ้นเคย
rmทันที แต่ก่อนอื่นฉันคิดว่าการสลับแบรนช์จะไม่ฆ่าโฟลเดอร์ที่ถูกเพิกเฉย แต่ ... ฉันใช้ github "gui based" ซึ่งเป็นเครื่องมือที่ดีพอสำหรับฉันและรองรับการจัดการดัชนียกเว้นว่ามันไม่รองรับ แล้วฉันจะใช้ 2 gui เพื่อการใช้งานที่แคบได้อย่างไร ยังไม่เห็นด้วยกับคำตอบ