我已将资源/ xml添加到本地和远程.gitignore
文件中。
error: Your local changes to the following files would be overwritten by merge:
resources/xml/analysis.xml
我的本地和远程gitignores看起来都像:
/vendor/
.env
/resources/xml/
我无法提取任何东西,甚至不会藏匿analysis.xml
帮助,因为藏匿后1秒又发生了变化。
更新 从缓存中删除并从远程
删除冲突文件后CONFLICT (modify/delete): resources/xml/analysis.xml deleted in
d58b27586850da80e85119be6005fbe538a5e8ab and modified in HEAD.
Version HEAD of resources/xml/analysis.xml left in tree.
Automatic merge failed; fix conflicts and then commit the result.
在此之后我需要另一个git rm resources/xml/analysis.xml
,我现在可以拉。
感谢
答案 0 :(得分:3)
Git似乎正在跟踪该文件,尽管它已在.gitignore
中输入。
当您之前将文件添加到Git时,会发生这种情况,之后只有gitignore
:当您忽略文件时,Git不会从索引中删除文件,但只是不将它们添加到索引中。
您需要从Git索引中删除该文件(但不是从您的硬盘驱动器中删除):
git rm --cached resources/xml/analysis.xml
或
git rm --cached -r resources/xml/
当您要删除其他文件时。
之后,Git将不知道该文件,将来会被忽略。
答案 1 :(得分:1)
这里发生的事情是Git正在保护您免于丢失该文件中的更改。
您可能已将该文件添加到.gitignore
,但这并不能告诉Git在跟踪该文件时停止关注它。因此,当您进行本地更改,并且拉/合并将导致更新文件时,Git会停止,因此您不会丢失这些本地更改。
如果您希望Git真的忘记该文件,您必须将其从存储库中删除,否则Git将不关心.gitignore
中有关该文件的内容。要从存储库中删除文件而不删除物理文件,可以执行以下操作:
git rm --cached resources/xml/analysis.xml
然后你必须承诺改变。只有从那时起,Git才会真正忽略该文件。
请注意,这并不一定会阻止Git保护您的本地文件。如果你最终合并一个提交文件仍然存在并且更改了它,那么Git可能会再次告诉你,文件会被触及。因此,您可能希望暂时重命名该文件以保护您在这些情况下的本地更改。
请注意,在这些情况下检查git status
的输出始终是个好主意。它将在您的原始情况下告诉您,该文件仍然已知到Git,并且它有一些未提交的更改。