發現一個問題,上傳項目到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
|