簡體   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