在.DS_Store文件我已經添加.DS_Store到的.gitignore文件,但它似乎只是忽略.DS_Store在根目錄下,而不是在每個文件夾和子文件夾。的.gitignore所有的每個文件夾和子
我該如何解決這個問題?
在.DS_Store文件我已經添加.DS_Store到的.gitignore文件,但它似乎只是忽略.DS_Store在根目錄下,而不是在每個文件夾和子文件夾。的.gitignore所有的每個文件夾和子
我該如何解決這個問題?
我想你遇到的問題是,在一些早期的承諾,你不小心添加.DS_Store文件到存儲庫。當然,一旦在存儲庫中跟蹤了一個文件,即使它與可用的.gitignore文件中的條目相匹配,也會繼續跟蹤它。
您必須手動刪除添加到存儲庫的.DS_Store文件。您可以使用git rm --cached .DS_Store
。一旦刪除,git應該忽略它。您應該只需要在根.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將它用於所有存儲庫:git config --global core.excludesfile ~/.gitignore_global
。
您還可以添加--cached
標誌的AUC的回答保持局部.DS_store文件,愛德華紐厄爾在他原來的答覆中提到。修改後的命令如下所示:find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
.. cheers and thanks!
添加**/.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
添加*.DS_Store
到你的.gitignore文件。這對我的作品完美
步驟1中,刪除所有的*.DS_store
文件。一個可以運行
git rm -f *.DS_Store
但要注意,rm -f
可有點危險,如果你有一個錯字! 第二步:添加
*.DS_Store
.DS_Store
to .gitignore。這對我有用!
公平點。 'rm -f'有點危險。 – travelingbones
如果.DS_Store從未添加到您的git存儲庫,只需將其添加到您的.gitignore文件。
如果你沒有一個,創建一個名爲
.gitignore
文件放在您的應用程序的根目錄,只是寫
**/.DS_Store
在這裏面。這絕不會允許.DS_Store文件偷偷在你的git中。
但是,如果它已經存在,寫在你的終端:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
然後提交和推送更改從您的遠程回購刪除.DS_Store:
git commit -m "Remove .DS_Store from everywhere"
git push origin master
現在添加。 DS_Store到您的.gitignore文件,然後再次提交併推送2個最後一段代碼(git commit ...,git push ...)
爲什麼加雙星號?那是什麼意思? – MilanG
@MilanG這是一個關鍵字,基本上意味着'搜索此目錄和所有子目錄'。 –
不確定這是雙星號代表的完美解釋。這是一個通配符。根據你想要達到的目的,可以使用'*'或'**'。這是告訴shell如何導航目錄的一種方式。這個stackoverflow答案完全解釋它https://stackoverflow.com/a/28199633/4092170 –
步驟:1)使用此命令刪除現有文件
找到。 -name .DS_Store -print0 | xargs的-0的git RM -f - 忽略UNMATCH
步驟:2)添加.DS_Store你的.gitignore文件
步驟:3)犯的.gitignore 更改混帳添加的.gitignore git的承諾-m「刪除.DS_Store」
可能的重複[如何刪除.DS \ _從Git存儲庫中存儲文件?](http://stackoverflow.com/questions/107701/how-can-i-remove- ds-store-files-from-a-git-repository) – 2013-08-23 02:04:20
你到底是如何將它添加到.gitignore的?它應該在所有目錄中工作(對我來說)。 – Thilo
它也適用於我。我也在文件末尾嘗試過,如果你必須有一個(特定於平臺的)換行符,但這並沒有改變,那麼層次結構的任何部分中的.DS_Store目錄仍然被忽略。 – enorl76