特别是.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
答案 0 :(得分:3)
由于拉动导致错误,因此损坏已经完成:有人已将.DS_Store
文件提交给git
。当然,这应该永远不会发生,但它已经发生了。
您真的不希望此类文件受版本控制,因为
git
会在签出提交时对其进行修改,或者更糟糕的是,当您合并分支时,它会主动将其他人的更改合并到本地.DS_Store
中已损坏的.DS_Store
文件。我不知道你的操作系统对这些文件的内容做了什么,但它不希望你以任何方式改变它们。
当您的操作系统修改了包含.DS_Store
文件的修订时,您将收到错误。
非Apple用户不会喜欢乱丢您的存储库的.DS_Store
个文件。
我建议你尝试寻找文件的来源,因为这些信息对于解决问题的方法至关重要。命令
git log --all -- .DS_Store
为您提供了触及.DS_Store
文件的所有提交的列表。这些是您需要重写以从历史记录中删除.DS_Store
的提交。
当然,重写提交可以使用大枪git filter-branch
来完成,但只要它只是最近尚未合并的提交,你就可以放弃git rebase -i
当然,当您完成后,将.DS_Store
放入.gitignore
并在中查看。这可能会阻止人们(意外)在将来添加.DS_Store
个文件。
答案 1 :(得分:0)
不是灵丹妙药,但以下内容对我有用:
git restore --staged ../.DS_Store
答案 2 :(得分:0)
只需删除 .DS_Store :)
为我工作。
答案 3 :(得分:0)
提交并推送更改后,可以尝试
git reset --hard
不要忘记将 .DS_Store 添加到 .gitignore