从git中删除.xcuserstate和DS_Store文件

在Xcode中我注意到.DS_Store和* .xcuserstate总是改变,不需要被提交。 所以,我写了一个包含这个的.gitignore文件:

.DS_Store *.xcuserstate 

除其他条目之外。 然后我用:

 git rm --cached *xcuserstate git rm ---cached .DS_Store 

在版本控制下删除这些文件types。 但是,当我去合并Xcode告诉我,有需要承诺的变化。 这些更改包括.DS_Store文件和.xcuserstate文件。

所以,我试过这个: 如何从Git仓库中删除.DS_Store文件?

 find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch find . -name *.xcuserstate -print0 | xargs -0 git rm --ignore-unmatch 

我得到了同样的结果。 如何从源代码pipe理中删除这些文件?

您需要在将其从暂存区域中删除后进行更改。

正如你所做的那样,运行:

 $ git rm --cached path/to/.DS_Store $ git rm --cached *.xcuserstate 

请注意,您可能在其他目录中有一些,所以您可能需要多次调用来获取它们。 在这一点上,你的删除是在索引中进行的,但还有更多的事情要做:添加你的.gitignore ,并提交最终结果:

 $ git add .gitignore $ git commit -m "Remove and ignore .xcuserstate and .DS_Store files." 

现在他们将被从存储库中删除,并在将来被忽略。 注意:即使你在本地使用了git rm --cached ,它也会删除其他人的文件。 不幸的是,你可以做的事情不多。 此外,这些文件仍然在您的历史logging中,所以根据您的操作,您可能会在其他分支中看到这些文件,直到合并为止,并且您的所有分支都基于具有新提交的内容。

尝试git update-index --assume-unchanged *.xcuserstate .DS_Store ,看看是否有帮助

Interesting Posts