我该如何处理这个Git错误?

cad*_*alt 7 git

特别是.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)

Jos*_*man 8

这不是灵丹妙药,但以下方法对我有用:

git restore --staged ../.DS_Store
Run Code Online (Sandbox Code Playgroud)


cma*_*ter 6

由于由于拉动而出现错误,因此损害已经造成:有人已经将.DS_Store文件提交到git. 这当然不应该发生,但它已经发生了。

你真的不希望这些文件受到版本控制,因为

  1. git将在检查提交时修改它们,或者更糟糕的是,.DS_Store当您合并可能创建损坏.DS_Store文件的分支时,它会主动将其他人的更改合并到本地。我不知道您的操作系统对这些文件的内容做了什么,但不希望您以任何方式更改它们。

  2. 每当您尝试检出包含.DS_Store操作系统修改过的文件的修订时,您都会收到错误消息。

  3. 非 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将来添加文件。