提交后的gitignore

Mad*_*uja 190 git github gitignore

我有一个在Github上托管的git存储库.提交许多文件后,我意识到我需要创建.gitignore和排除.exe,.obj文件.

但是,它会自动从存储库中删除这些提交的文件吗?有没有办法强制这样做?

man*_*lds 306

不,你不能强制删除已在repo中提交的文件,因为它已被添加到 .gitignore

您必须git rm --cached删除repo中不需要的文件.(--cached因为你可能想要保留本地副本但是从repo中移除.)所以如果你想从你的repo中删除所有的exe

git rm --cached /\*.exe
Run Code Online (Sandbox Code Playgroud)

(请注意,星号*是从shell中引用的 - 这可以让git而不是shell扩展文件和子目录的路径名)

  • @Madhur Ahuja其实如果你做`git rm /\*.exe`它会删除你回购中的所有exe文件 (6认同)
  • @Costa他们在那里逃避星号,以防止shell解释它,因为它是用于`git`. (4认同)
  • 有什么用? (3认同)
  • 警告:这些文件保存在本地,这是事实......但是其他运行“git pull”的用户将看到他们的文件被删除。 (3认同)

Kin*_*nch 32

但是,它会自动从存储库中删除这些提交的文件吗?

.gitignore不会.即使现有,您也可以使用-f(强制)标记暂存"已忽略"的文件.如果他们的文件已经提交,则不会自动删除它们.

git rm --cached path/to/ignored.exe
Run Code Online (Sandbox Code Playgroud)


sla*_*lal 20

如果您尚未推送更改:

git rm -r --cached .
git add .
git commit -m 'clear git cache'
git push
Run Code Online (Sandbox Code Playgroud)


Ema*_*ele 12

我不得不删除.idea和目标文件夹,阅读完所有评论后,这对我有用:

git rm -r .idea
git rm -r target
git commit -m 'removed .idea folder'
Run Code Online (Sandbox Code Playgroud)

然后推向掌握


seh*_*ehe 5

但是,它会自动从存储库中删除这些提交的文件吗?

没有.

执行此操作的"最佳"方法是使用git filter-branch此处所写的:

git-filter-branch的手册页包含全面的示例.

注意您将重写历史记录.如果您发布了包含意外添加文件的任何修订,则可能会给这些公共分支的用户带来麻烦.通知他们,或者想想你需要删除文件有多糟糕.

注意在存在标记时,请始终使用--tag-name-filter cat选项git filter-branch.当你意识到你需要它时,它永远不会伤害并且会让你头疼