ฉันได้เพิ่ม. DS_Store ไปยังไฟล์. gignignore แต่ดูเหมือนว่าจะไม่สนใจเพียงแค่. DS_Store ในไดเรกทอรีรากไม่ใช่ทุกโฟลเดอร์และโฟลเดอร์ย่อย
ฉันจะแก้ไขได้อย่างไร
ฉันได้เพิ่ม. DS_Store ไปยังไฟล์. gignignore แต่ดูเหมือนว่าจะไม่สนใจเพียงแค่. DS_Store ในไดเรกทอรีรากไม่ใช่ทุกโฟลเดอร์และโฟลเดอร์ย่อย
ฉันจะแก้ไขได้อย่างไร
คำตอบ:
ฉันคิดว่าปัญหาที่คุณมีอยู่คือในการกระทำก่อนหน้านี้คุณได้เพิ่มไฟล์. DS_Store ไปยังที่เก็บโดยไม่ตั้งใจ แน่นอนเมื่อไฟล์ถูกติดตามในที่เก็บของคุณมันจะยังคงถูกติดตามแม้ว่ามันจะตรงกับรายการในไฟล์. gitignore ที่เกี่ยวข้อง
คุณต้องลบไฟล์. DS_Store ที่ถูกเพิ่มไปยังที่เก็บของคุณด้วยตนเอง git rm --cached .DS_Store
คุณสามารถใช้ เมื่อถูกลบออกแล้วคอมไพล์ควรเพิกเฉย คุณควรจะต้องบรรทัดต่อไปนี้ในแฟ้ม .gitignore .DS_Store
รากของคุณ: อย่าลืมช่วงเวลา!
git rm --cached .DS_Store
ลบออก.DS_Store
จากไดเรกทอรีปัจจุบันเท่านั้น คุณสามารถใช้find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
เพื่อลบทั้งหมดออก.DS_Stores
จากพื้นที่เก็บข้อมูล
เคล็ดลับที่รู้สึก: เนื่องจากคุณอาจไม่ต้องการรวมไฟล์. DS_Store ให้สร้างกฎทั่วโลก ครั้งแรกที่ทำให้โลก .gitignore echo .DS_Store >> ~/.gitignore_global
ไฟล์บางแห่งเช่น ตอนนี้บอกคอมไพล์ให้ใช้สำหรับที่เก็บทั้งหมด: git config --global core.excludesfile ~/.gitignore_global
.
หน้านี้ช่วยฉันตอบคำถามของคุณ: https://help.github.com/articles/ignoring-files
เพิ่ม**/.DS_Store
ลง.gitignore
ในไดเรกทอรีย่อย
หาก.DS_Store
มุ่งมั่นแล้ว:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
ที่จะไม่สนใจพวกเขาในพื้นที่เก็บข้อมูลทั้งหมด: (บางครั้งก็ตั้งชื่อ._.DS_Store
)
echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
git rm --cached your_file
ครั้งแรก
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
จาก: stackoverflow.com/questions/18393498/…
-f
จำเป็นต้องมีการเพิ่มหากคุณมีไฟล์ที่เปิดอยู่ในโฟลเดอร์ relavent:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
ถ้า. DS_Store ไม่เคยถูกเพิ่มไปยังที่เก็บ git ของคุณเพียงเพิ่มไปยังไฟล์. gitignore ของคุณ
หากคุณไม่มีไฟล์ให้สร้างไฟล์ชื่อ
.gitignore
ในไดเรกทอรีรากของแอปของคุณและเขียน
**/.DS_Store
ในนั้น. สิ่งนี้จะไม่อนุญาตให้ไฟล์. DS_Store แอบเข้าไปในคอมไพล์ของคุณ
แต่ถ้ามันมีอยู่แล้วเขียนใน terminal ของคุณ:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
จากนั้นคอมมิตและผลักดันการเปลี่ยนแปลงเพื่อลบ. DS_Store ออกจาก repo ระยะไกลของคุณ:
git commit -m "Remove .DS_Store from everywhere"
git push origin master
และตอนนี้เพิ่ม. DS_Store ไปยังไฟล์. gitignore ของคุณจากนั้นส่งและรับอีกครั้งด้วยรหัส 2 ชิ้นสุดท้าย (git กระทำ ... , git push ... )
*
หรือ**
ขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุ มันเป็นวิธีการบอกเชลล์ถึงวิธีการนำทางไดเรกทอรี คำตอบของ stackoverflow นี้อธิบายได้อย่างสมบูรณ์ว่าstackoverflow.com/a/28199633/4092170
ไฟล์. gitignoreของคุณควรมีลักษณะดังนี้:
# Ignore Mac DS_Store files
.DS_Store
ตราบใดที่คุณไม่มีเครื่องหมายสแลชมันจะถูกจับคู่กับชื่อไฟล์ในไดเรกทอรีทั้งหมด (จากที่นี่ )
git rm --cached path/to/file/here
ขั้นตอนที่ 1 ลบ*.DS_store
ไฟล์ทั้งหมด หนึ่งสามารถเรียกใช้
git rm -f *.DS_Store
แต่ระวังให้ดีrm -f
อาจเป็นอันตรายได้หากคุณพิมพ์ผิด! ขั้นตอนที่สอง: เพิ่ม
*.DS_Store
.DS_Store
ถึง. gitignore สิ่งนี้ได้ผลสำหรับฉัน!
เพิ่ม*.DS_Store
ลงในไฟล์. gitignore ของคุณ นั่นเหมาะกับฉันอย่างสมบูรณ์
นอกจากนี้คุณยังสามารถเพิ่มการ--cached
ตั้งค่าสถานะในคำตอบของ auco เพื่อรักษาไฟล์. DS_store ในเครื่องตามที่ Edward Newell พูดถึงในคำตอบดั้งเดิมของเขา คำสั่งที่แก้ไขแล้วจะมีลักษณะเช่นนี้: find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
..cheers และขอบคุณ!
ขั้นตอน: 1) ลบไฟล์ที่มีอยู่โดยใช้คำสั่งนี้
หา -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
ขั้นตอน: 2) เพิ่ม. DS_Store ในไฟล์. gitignore ของคุณ
ขั้นตอน: 3) ยอมรับการเปลี่ยนแปลงของคุณใน. gitignore git เพิ่ม. gitignore git กระทำ -m "ลบออก. DS_Store"
$ git rm ./*.DS_Store
- ลบ. DS_Store ทั้งหมดออกจากคอมไพล์$ echo \.DS_Store >> .gitignore
- ละเว้น. DS_Store ในอนาคตกระทำ & ดัน