我已将.DS_Store添加到.gitignore文件中,但似乎它只忽略根目录中的.DS_Store,而不是每个文件夹和子文件夹.
我该如何解决?
Edw*_*ell 594
我认为你遇到的问题是,在一些早期的提交中,你不小心将.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.
这个页面帮助我回答了你的问题:https://help.github.com/articles/ignoring-files
ron*_*192 330
添加**/.DS_Store到.gitignore子目录
如果.DS_Store已经提交:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Run Code Online (Sandbox Code Playgroud)
在所有存储库中忽略它们:(有时它命名._.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
Run Code Online (Sandbox Code Playgroud)
drj*_*nco 100
如果.DS_Store从未添加到您的git存储库,只需将其添加到.gitignore文件即可.
如果没有,请创建一个名为的文件
.gitignore
Run Code Online (Sandbox Code Playgroud)
在您的应用程序的根目录中,只需编写
**/.DS_Store
Run Code Online (Sandbox Code Playgroud)
在里面.这永远不会允许.DS_Store文件潜入你的git.
但是,如果它已经存在,请在您的终端中写入:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Run Code Online (Sandbox Code Playgroud)
然后提交并推送更改以从远程仓库中删除.DS_Store:
git commit -m "Remove .DS_Store from everywhere"
git push origin master
Run Code Online (Sandbox Code Playgroud)
现在将.DS_Store添加到.gitignore文件中,然后再次提交并推送最后两段代码(git commit ...,git push ...)
Yar*_*rin 81
您的.gitignore文件应如下所示:
# Ignore Mac DS_Store files
.DS_Store
Run Code Online (Sandbox Code Playgroud)
只要不包含斜杠,它就会与所有目录中的文件名匹配.(从这里)
use*_*745 42
只需将其放在新的一行中 .gitignore
**/.DS_Store
Run Code Online (Sandbox Code Playgroud)
来自git 文档
- 前导“**”后跟斜杠表示在所有目录中匹配。例如,“**/foo”匹配任意位置的文件或目录“foo”,与模式“foo”相同。"**/foo/bar" 匹配直接位于目录 "foo" 下的任何位置的文件或目录 "bar"。
tra*_*nes 23
第1步,删除所有*.DS_store文件.一个人可以跑
git rm -f *.DS_Store
Run Code Online (Sandbox Code Playgroud)
但请注意,rm -f如果您有拼写错误,可能会有点危险!第二步:添加
*.DS_Store
.DS_Store
Run Code Online (Sandbox Code Playgroud)
到.gitignore.这对我有用!
小智 11
您还可以将--cached标志添加到auco的答案中以维护本地.DS_store文件,正如Edward Newell在其原始答案中提到的那样.修改后的命令看起来像这样:find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch..表示谢谢!
$ git rm ./*.DS_Store- 从 git 中删除所有 .DS_Store$ echo \.DS_Store >> .gitignore- 将来忽略.DS_Store提交和推送
您应该在创建项目时添加以下行。它总是会忽略.DS_Store被推送到存储库。
*.DS_Store这将在代码提交时忽略 .DS_Store。
git rm --cached .DS_Store这是从存储库中删除 .DS_Store 文件,如果需要,可以取消注释。
## ignore .DS_Store file.
# git rm --cached .DS_Store
*.DS_Store
Run Code Online (Sandbox Code Playgroud)
小智 5
步骤:1)使用此命令删除现有文件
找 .-name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
步骤:2)在.gitignore文件中添加.DS_Store
步骤:3)在.gitignore中提交您的更改git add .gitignore git commit -m"removed .DS_Store"
| 归档时间: |
|
| 查看次数: |
237238 次 |
| 最近记录: |