Mac中Git忽略.DS_Store文件


發現一個問題,上傳項目到git會多出來一個打不開的.DS_Store文件,而且每次修改后或者沒有修改打開過項目就會有一個文件(.DS_Store)說是修改過的,自己看着很不爽

.DS_Store 是什么

.DS_Store(英文全稱 Desktop Services Store)是一種由蘋果公司的Mac OS X操作系統所創造的隱藏文件,目的在於存貯目錄的自定義屬性,例如文件們的圖標位置或者是背景色的選擇。相當於 Windows 下的 desktop.ini。刪掉后會自動重新生成。
 

為什么要搞它

留着不是挺好的嗎?一些自以為沒有強迫症的人可能會以這種心態去保留它。其實不然,在 Git、SVN 甚至最基本的U盤拷貝文件夾的時候還是會把這個文件提交上去,然而這個文件一點卵用都沒有,跟項目一點關系也沒有。

如果不處理,每次拷貝給你同事的文件里都會包含有這個文件,或者上傳網頁的時候,應該把這個文件刪除比較妥當,因為里面包含了一些你不一定希望別人看見的信息。(尤其是網站,通過 .DS_Store 可以知道這個目錄里面所有文件的清單,很多時候這是一個不希望出現的問題。)

 

刪除 .DS_Store

如果你的項目中還沒有自動生成的 .DS_Store 文件,那么直接將 .DS_Store 加入到 .gitignore 文件就可以了。如果你的項目中已經存在 .DS_Store 文件,那就需要先從項目中將其刪除,再將它加入到 .gitignore。如下:

#刪除項目中的所有.DS_Store。這會跳過不在項目中的 .DS_Store
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

#將 .DS_Store 加入到 .gitignore
echo .DS_Store >> ~/.gitignore

#更新項目
git add .
git commit -m '.DS_Store banished!'

刪除、禁止生成

如果你只需要刪除磁盤上的 .DS_Store,可以使用下面的命令來刪除當前目錄及其子目錄下的所有.DS_Store 文件:

  • 刪除當前目錄的 .DS_store
1
find . -name '*.DS_Store' -type f -delete
  • 刪除所有目錄的 .DS_store
1
sudo find / -name ".DS_Store" -depth -exec rm {} \;
  • 禁止 .DS_store 生成
1
defaults write com .apple.desktopservices DSDontWriteNetworkStores -bool TRUE
  • 恢復 .DS_store 生成
1
defaults delete com .apple.desktopservices DSDontWriteNetworkStores

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM