ลบไฟล์ออกจากที่เก็บ แต่เก็บไว้แบบโลคัล


369

ฉันมีโฟลเดอร์ที่ฉันต้องการลบในที่เก็บระยะไกลของฉัน ฉันต้องการลบ แต่เก็บโฟลเดอร์ไว้ในคอมพิวเตอร์ของฉัน



โปรดดูคำถามที่เกี่ยวข้องที่แนะนำในขณะที่คุณกำลังเขียนคำถามของคุณซ้ำกันอาจเป็นหนึ่งในสองคนแรก
Cascabel

อีกหนึ่งรายการที่ซ้ำกัน: stackoverflow.com/questions/1273108/…
Cascabel

คำตอบ:


637
git rm --cached -r somedir

จะทำการลบไดเรกทอรี แต่จะไม่แตะอะไรบนดิสก์ สิ่งนี้ใช้ได้กับไฟล์เช่น:

git rm --cached somefile.ext

หลังจากนั้นคุณอาจต้องการเพิ่มsomedir/หรือเพิ่มไฟล์somefile.extของคุณ.gitignoreเพื่อให้คอมไพล์ไม่พยายามเพิ่มกลับ


24
และเพิ่มเส้นทางไปยัง. gitignore ดังนั้น git จะไม่พยายามทำให้คุณเพิ่มในภายหลัง
grossvogel

3
สิ่งนี้จะส่งผลให้ (ไฟล์ใน) ไดเรกทอรีที่ถูกลบออกเมื่อเขาดึงจากระยะไกลหรือไม่?
bstpierre

ไม่ใช่เมื่อเขาดึง ไฟล์จะยังคงถูกลบในเครื่องในระหว่างกระบวนการผสานอัตโนมัติของ pull หลังจากนั้นการพุชจะทำให้ไฟล์ถูกลบในฝั่งเซิร์ฟเวอร์
วอลเตอร์ Mundt

7
จะเกิดอะไรขึ้นถ้าฉันมีรีโมตตัวที่สาม ไฟล์ที่เกี่ยวข้องจะถูกลบในการดึงในอนาคตหรือไม่? ฉันถามเพราะฉันรู้สึกว่านี่เป็นกรณีการใช้งานทั่วไปเช่นตรวจสอบไฟล์บางไฟล์ลงใน repo ตระหนักในภายหลังว่าพวกเขาแตกต่างระหว่างรีโมทด้วยเหตุผลที่ดีและไม่ควรอยู่ใน repo ตั้งแต่แรก เพื่อแก้ไขปัญหานั้นโดยเก็บข้อมูลการเช็คเอาต์ในเครื่องทั้งหมดตามที่เป็นอยู่ แต่ลบไฟล์ออกจาก repo
บ๊อบบี้แจ็ค

6
สำหรับไฟล์เดียวคุณสามารถทำได้git rm --cached path/to/file
Travis Reeder

3

ฉันแค่จะ:

  • ย้ายโฟลเดอร์ออกจากแผนผังการทำงานของคุณ
  • git rm โฟลเดอร์ยอมรับการเปลี่ยนแปลง
  • เพิ่มใน.gitignore(หรือ.git/info/excludes) กระทำการเปลี่ยนแปลง
  • ย้ายโฟลเดอร์กลับ

8
นี่ไม่ใช่ทางออกที่ดี - ถ้าคุณมีไดเรคทอรีที่ใหญ่มาก
ioleo

อาจจำเป็นต้องใช้git rm -r
theUtherSide

1
@loostro ไม่ต้องย้ายไปยังอุปกรณ์บล็อกอื่น ระบบไฟล์ส่วนใหญ่จะเพิ่งอัพเดต inode ของไฟล์และจะไม่ย้ายไดเรกทอรีทั้งหมด
648trindade
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.