【发布时间】:2014-08-04 16:33:00
【问题描述】:
我想忽略之前跟踪的文件/目录树 - 永远忽略它,但不在拉取时被删除 - 只需在存储库拉动发生了。这可能吗 ?为什么不(如果不是)?我应该怎么做?
注意:Remove a file from a Git repository without deleting it from the local filesystem 中接受的答案 - 即 git rm --cached path - 将导致文件在拉取时被删除。讨厌。不仅如此,“如果您从删除之前签出修订版,然后从删除后签出修订版,它将删除您的文件”(请参阅此comment)有关其他有趣的 cmets/answers,请参阅此问题但是解决我的问题。
我完全知道--assume-unchanged 标志,但这不是我想要的——我想告诉 git(和所有存储库克隆)“嘿,停止跟踪这个文件/树”而不是“删除这个文件/树” - 所以我想在全球范围内--assume-unchanged。如果不可能(为什么?)我需要workaround。
作为记录,我正在尝试引导 git 以使用它来保存/共享历史记录,并且我希望能够随意停止跟踪文件/目录 - 无需删除它们。
相关:
- git assume-unchanged vs skip-worktree - 对假设不变的一般建议应该持保留态度(拉动、重置 --hard 等)
-
git assume unchanged vs skip worktree - ignoring a symbolic link - 请参阅
core.sparseCheckout的答案
【问题讨论】:
-
我没有已知的答案,但我觉得可以通过将文件添加到
.gitignore来解决这个问题。 -
我会尝试
git rm --cached以及将文件添加到.gitignore。 -
正如 Pavel 在问题 you linked 中解释的那样,如果此行为不存在,那么您的工作目录将累积从存储库中删除的文件。如果其他进程最终使用了应该删除的文件,这可能会导致其他问题。此外,恢复从 repo 中删除的文件的本地副本也很简单(Pavel 的帖子中也有描述)。
-
@jamessan:读了,但这不是重点(谁说过 deleted 文件) - 相反,torek 的comment 一如既往地切中要害
-
您说的是已删除的文件。这就是您问题的全部重点-当用户从已删除文件的 git 存储库中提取文件时,如何避免从用户的计算机中删除文件,所以我看不出这是怎么回事。