我想忽略之前跟踪的文件/目录树 - 永远忽略它,但在拉取时将其删除 not - 只需在发生拉取的存储库上忽略它即可。这可能吗 ?为什么不(如果不是)?我应该如何进行?
注意:从 Git 存储库中删除文件而不从本地文件系统中删除它中接受的答案 - 即
git rm --cached path
- 将导致文件在拉取时被删除。可恶的。不仅如此,“如果您签出删除前的修订版,然后签出删除后的修订版,它将删除您的文件”(请参阅此评论)请参阅此问题以获取其他有趣的评论/答案,但这些评论/答案并不不过解决我的问题。
--assume-unchanged
标志,但这不是我想要的 - 我想告诉 git (和所有存储库克隆)“嘿,停止跟踪这个文件/树”,而不是“删除这个文件/树” - 所以我想在全球范围内实现 --assume-unchanged
。如果不可能(为什么?)我需要一个解决方法。
为了记录,我正在尝试引导 git 使用它来保存/共享历史记录,并且我希望能够随意停止跟踪文件/目录 - 而不删除它们。
相关:
core.sparseCheckout
我也遇到了同样的问题,我使用了
git rm --cached <file>
并且它在本地工作,但是一旦我推送到远程服务器,它也删除了文件,我不想要这样。然后我找到了 git update-index --assume-unchanged <file>
并且它忽略本地更改并且不会从远程服务器中删除它,效果非常好!
这是不可能的。为了防止跟踪新的更改,您需要从存储库中删除该文件(使用
git rm
或 git rm --cached
)。这会添加对删除文件的提交进行更改。当该更改应用于其他存储库时,将执行删除操作,导致文件被删除。
我也有同样的问题。 如果我按照这个顺序做:
文件包含在存储库和新克隆中,但不会跟踪本地更改,并且在执行拉取命令时不会更新文件。
但是,如果我按照这个顺序这样做:
文件已添加到远程存储库,但文件已被跟踪。 我无法在远程存储库中取消跟踪此文件。 我可以执行“git rm --cached file”,但这会在提交时删除远程存储库上的文件。 我可以执行“git update-index --assume-unchanged file”,这将阻止我的本地索引跟踪更改,但如果我执行拉取时远程存储库上的文件发生更改,它们将被覆盖。
这些都不是我想要实现的 - 即拥有为新克隆创建但不被跟踪的文件的“初始”版本。第一种方式似乎有效,但反之则不然,而且无法撤消它 - 这很糟糕。