繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM