ฉันยอมรับไฟล์ที่ฉันไม่ต้องการทำตอนนี้ ฉันจะบอกให้ git เพิกเฉยต่อไฟล์เหล่านี้ในอนาคตได้อย่างไร
แก้ไข: ฉันต้องการลบออกจากพื้นที่เก็บข้อมูลด้วย พวกเขาเป็นไฟล์ที่สร้างขึ้นหลังจากที่เคยสร้างหรือให้การสนับสนุนเครื่องมือเฉพาะผู้ใช้
ฉันยอมรับไฟล์ที่ฉันไม่ต้องการทำตอนนี้ ฉันจะบอกให้ git เพิกเฉยต่อไฟล์เหล่านี้ในอนาคตได้อย่างไร
แก้ไข: ฉันต้องการลบออกจากพื้นที่เก็บข้อมูลด้วย พวกเขาเป็นไฟล์ที่สร้างขึ้นหลังจากที่เคยสร้างหรือให้การสนับสนุนเครื่องมือเฉพาะผู้ใช้
คำตอบ:
.gitignoreเพื่อให้ตรงกับไฟล์ที่คุณต้องการละเว้นgit rm --cached /path/to/fileดูสิ่งนี้ด้วย:
หลังจากแก้ไข.gitignoreเพื่อให้ตรงกับไฟล์ที่ถูกละเว้นคุณสามารถทำได้git ls-files -ci --exclude-standardเพื่อดูไฟล์ที่รวมอยู่ในรายการที่แยก จากนั้นคุณสามารถทำได้
//On Linux:
git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached
//On Windows:
for /F "tokens=*" %a in ('git ls-files -ci --exclude-standard') do @git rm --cached "%a"
//On mac
alias apply-gitignore="git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached"
เพื่อลบออกจากพื้นที่เก็บข้อมูล (โดยไม่ลบออกจากดิสก์)
แก้ไข : คุณสามารถเพิ่มสิ่งนี้เป็นนามแฝงในไฟล์. gitconfig ของคุณเพื่อให้คุณสามารถเรียกใช้ได้ทุกเวลาที่คุณต้องการ เพียงเพิ่มบรรทัดต่อไปนี้ในส่วน [นามแฝง] (แก้ไขตามต้องการสำหรับ Windows หรือ Mac):
apply-gitignore = !git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached
(การ-rตั้งค่าสถานะในการxargsป้องกันไม่ให้git rmทำงานกับผลลัพธ์ที่ว่างเปล่าและพิมพ์ข้อความการใช้งาน แต่อาจได้รับการสนับสนุนโดย GNU findutils รุ่นอื่น ๆxargsอาจหรือไม่อาจมีตัวเลือกที่คล้ายกัน)
ตอนนี้คุณสามารถพิมพ์git apply-gitignorerepo ของคุณและมันจะทำงานให้คุณ!
!git ก่อน? อืม ... เหมืองของข้าทำงานalias apply-gitignore="git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached"ได้ TKS!
for /F "tokens=*" %a in ('git ls-files -ci --exclude-standard') do @git rm --cached "%a"
-rเป็นค่าเริ่มต้นและไม่ได้รับการยอมรับจากรุ่น BSD -rดังนั้นลบ
เพื่อออกจากไฟล์ใน repo แต่ไม่สนใจการเปลี่ยนแปลงในอนาคต:
git update-index --assume-unchanged <file>
และเพื่อเลิกทำสิ่งนี้:
git update-index --no-assume-unchanged <file>
เพื่อค้นหาไฟล์ที่ตั้งค่าไว้ด้วยวิธีนี้:
git ls-files -v|grep '^h'
เครดิตสำหรับคำตอบเดิมไปที่ http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/
git ls-files -ci --exclude-standard -z | xargs -0 git update-index --assume-unchangedถ้าช่วย
git rm --cachedจะลบไฟล์ในที่เก็บซึ่งไม่ตรงกับความต้องการของ Quizzer ขอบคุณ. ฉันซาบซึ้งจริงๆ คำตอบของคุณช่วยฉันได้มาก
ตรวจสอบให้แน่ใจว่า repo ที่แท้จริงของคุณเป็นรุ่นล่าสุด
.gitignoreตามที่คุณต้องการgit rm -r --cached .git add .จากนั้นกระทำตามปกติ
คำถามเก่า แต่พวกเราบางคนอยู่ในgit-posh(powershell) นี่คือทางออกสำหรับสิ่งนั้น:
git ls-files -ci --exclude-standard | foreach { git rm --cached $_ }
ทำตามขั้นตอนเหล่านี้:
เพิ่มพา ธ ไปยังgitignoreไฟล์
เรียกใช้คำสั่งนี้
git rm -r --cached foldername
กระทำการเปลี่ยนแปลงตามปกติ