忽略 git 文件夹而不从远程仓库中删除,并忽略新文件

ignore git folder without removing from remote repo, and ignore new files

我们有一个 git 存储库,其中有一个我们想要取消跟踪的文件夹,因此:

  1. 该文件夹仍在我们的远程目录中,但在 运行 "git status"
  2. 时不会显示本地所做的任何更改
  3. 任何自动添加到文件夹的新文件也不会被跟踪

在线查看我们得出的结论是,如果该文件夹在创建时未添加到 git忽略,那么之后将其添加到它就不会停止跟踪该文件夹。该文件夹是一种程序生成的文件夹,但我们不需要从远程仓库更新它,但仍希望将其保留在那里,因为它可以加快某些事情的进程。网上找了几个解决方案,看到很多人运行

git rm -r --cached <your directory>

这将取消跟踪文件夹,但也会将其从我的远程存储库中删除,这不是我们想要的。我看到另一个涉及 运行

的解决方案
git update-index --assume-unchanged /dir/to/untrack

这将打印出 "Ignoring path dir",但如果在该文件夹中创建了一个新文件,它将在 运行 "git status" 时显示。我们还尝试编辑一个文件,该文件位于我们设置为取消跟踪的目录下一个目录(即 dir/to/untrack/dir2/changedThisFile.txt ),并且该文件在 运行 "git status" 时仍然显示。

如有任何帮助或建议,我们将不胜感激。
谢谢!

首先,您需要为每个单独的文件 "assume unchanged":

git ls-files -z /dir/to/untrack/ | xargs -0 git update-index --assume-unchanged

然后,将包含以下内容的 .gitignore 文件添加到 /dir/to/untrack/:

*
!/.gitignore

这应该可以防止任何新的 changes/additions 被拾取。