特别是.DS_Store文件,我在Mac上,所以我当然把它放在我的.gitignore中.我根本不在乎文件.但由于某种原因,它试图从我设置为服务器的裸仓库中取出它.
Updating 8e11f79..b315527
error: Your local changes to the following files would be overwritten by merge:
.DS_Store
config/wi-fi.txt
web/.DS_Store
Please, commit your changes or stash them before you can merge.
Aborting
Run Code Online (Sandbox Code Playgroud)
由于由于拉动而出现错误,因此损害已经造成:有人已经将.DS_Store
文件提交到git
. 这当然不应该发生,但它已经发生了。
你真的不希望这些文件受到版本控制,因为
git
将在检查提交时修改它们,或者更糟糕的是,.DS_Store
当您合并可能创建损坏.DS_Store
文件的分支时,它会主动将其他人的更改合并到本地。我不知道您的操作系统对这些文件的内容做了什么,但不希望您以任何方式更改它们。
每当您尝试检出包含.DS_Store
操作系统修改过的文件的修订时,您都会收到错误消息。
非 Apple 用户不会喜欢在.DS_Store
您的存储库中乱丢文件。
我建议您尝试查找文件的来源,因为该信息是您如何解决问题的核心。命令
git log --all -- .DS_Store
Run Code Online (Sandbox Code Playgroud)
为您提供已触及该.DS_Store
文件的所有提交的列表。这些是您需要重写以.DS_Store
从历史记录中删除的提交。
当然,重写提交可以用大枪来完成git filter-branch
,但只要只有最近的提交尚未合并,你就可以逃避做一个git rebase -i
.
而且,当然,当你完成后,把.DS_Store
你.gitignore
和签入。这应该会阻止人们(不小心).DS_Store
将来添加文件。