如果文件不断变化,无法从git中提取

时间:2014-12-27 11:11:35

标签: git

我已将资源/ 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,我现在可以拉。 感谢

2 个答案:

答案 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,并且它有一些未提交的更改。