[英]Can't pull from git if a file is continuously changing
我已经在本地和远程.gitignore
文件中添加了resources / xml。
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
,现在就可以执行操作。 谢谢
尽管文件已在.gitignore
输入,但似乎该文件已被Git跟踪。
当您之前将文件添加到Git,然后才将gitignore
添加到gitignore
时,就会发生这种情况:当您忽略文件时,Git不会从其索引中删除文件,而不会将它们添加到索引中。
您需要从Git索引中删除文件(而不是从硬盘驱动器中删除):
git rm --cached resources/xml/analysis.xml
要么
git rm --cached -r resources/xml/
当还有其他文件要删除时。
之后,该文件将是Git未知的,以后将被忽略。
这里发生的是Git保护您避免丢失该文件中的更改。
您可能已将文件添加到.gitignore
但这并没有告诉Git在跟踪该文件时不要再关心它。 因此,当您进行本地更改时,通过拉/合并将导致文件更新,Git会停止,因此您不会丢失这些本地更改。
如果您希望Git真正忘记该文件,则必须将其从存储库中删除,否则Git不会在意.gitignore
有关该文件的内容。 要从存储库中删除文件而不删除物理文件,可以执行以下操作:
git rm --cached resources/xml/analysis.xml
然后,您将不得不进行更改。 只有从那时起,Git才会真正忽略该文件。
请注意,这不一定会阻止Git保护您的本地文件。 如果您最终合并了一个文件仍然存在且已更改的提交,那么Git可能最终再次告诉您该文件将被触摸。 因此,在这种情况下,您可能需要临时重命名文件以保护本地更改。
请注意,在这些情况下检查git status
的输出始终是一个好主意。 它会在您的原始情况下告诉您,该文件仍然是Git 已知的 ,并且它具有一些未提交的更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.