github gitignore 添加以前不在 gitignore 上的文件夹

github gitignore adds folder previously NOT on gitignore

我错误地在 github 项目上添加了一个我不想再存在的文件夹。我 want/need 它只在我的本地项目中。

所以我更新了我的 .gitignore 文件,添加了目录名称,我已经提交并推送了更改,但文件夹仍在 github.

我是该项目的另一位贡献者。会是什么呢?也许他也应该更新他的 gitignore 并做出一些让这有效的事情?

我在同一个项目上用另一个错误添加的文件做了完全相同的事情并且它起作用了,唯一的区别是现在我有一个额外的项目贡献者。

你的问题是 git 总是跟踪 git 知道的文件 所以如果你之前跟踪过一个文件将它添加到 .gitignore, git 不会考虑该更改。下次小心点;)

您在两种不同的情况下跟踪了不想再跟踪的文件。

  1. 您不想在您的存储库中共享的文件或目录,因此您需要从整个存储库历史记录中删除它们,例如密码(出于安全原因)、配置文件、二进制文件、大资源文件等

  2. 您没有包含在您的.git忽略文件中的文件或目录,您不想跟踪但不介意在您的存储库中维护的文件或目录历史

永久删除

如果你是第一种情况,你必须使用filter-branch --tree-filter并传递你想要执行的命令。

git filter-branch --tree-filter 'YOUR COMMAND' HEAD

此命令将从整个存储库历史记录中永久删除您指定的文件或目录,并强制其他协作者执行git pull -f将存储库与新的远程状态同步,所以要小心,因为你无法撤消它!

例如,如果您跟踪了一个名为 Keys.plist 的文件,传统的删除命令是 rm Keys.plist。如果你想确保它运行,我建议你添加 -f 参数来强制删除

示例:

git filter-branch --tree-filter 'rm -f Keys.plist' HEAD

在你的情况下,你想删除一个目录,所以我想你需要将 -R 添加到 rm 命令,如下所示:

git filter-branch --tree-filter 'rm -f -R YourDirectory' HEAD

所以现在,您需要使用

将您的分支推送到您的远程存储库
git push origin YourBranch -f

不要忘记包含 -f 以在远程存储库中强制更新。

只有以后不跟踪那些文件

这更简单,您处于第二种情况并且您不介意您的文件继续出现在您的存储库历史记录中。

所以在那种情况下,你必须使用 git rm --cached -r YourDirectory

这次不要忘记将您不想跟踪的目录或文件包含在 .gitignore 文件中。