对提交的文件应用.gitignore

我已经提交了大量文件,现在我想忽略它们。我怎么能告诉git现在忽略这些文件从未来的提交?

编辑:我也想从存储库中删除它们。它们是在每次构建之后创建的文件,或用于特定于用户的工具支持。

194435 次浏览

在编辑.gitignore以匹配被忽略的文件之后,您可以执行git ls-files -ci --exclude-standard来查看排除列表中包含的文件;你可以这样做

  • Linux / MacOS: # EYZ0
  • Windows (PowerShell): git ls-files -ci --exclude-standard | % { git rm --cached "$_" }
  • Windows (cmd.exe): for /F "tokens=*" %a in ('git ls-files -ci --exclude-standard') do @git rm --cached "%a"

从存储库中删除它们(而不从磁盘中删除它们)。

编辑:您还可以在.gitconfig文件中添加它作为别名,以便您可以随时运行它。只需在[alias]部分中添加以下一行(在Windows或Mac中根据需要修改):

apply-gitignore = !git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached

(xargs中的-r标志阻止git rm在空结果上运行并打印出它的使用消息,但可能只有GNU findutils支持。其他版本的xargs可能有,也可能没有类似的选项。)

现在你只需在你的repo中输入git apply-gitignore,它就会为你工作!

将文件保留在repo中,但忽略未来对其的更改:

git update-index --assume-unchanged <file>

要撤消此操作:

git update-index --no-assume-unchanged <file>

要找出哪些文件已经以这种方式设置:

git ls-files -v|grep '^h'

信用的原始答案 # EYZ0 < / p >

老问题,但我们中的一些人在git-posh (powershell)。这是解决方案:

git ls-files -ci --exclude-standard | foreach { git rm --cached $_ }

请确保您的实际回购是最新版本,没有正在进行的更改

  1. 编辑.gitignore,如你所愿
  2. git rm -r --cached .(删除所有文件)
  3. git add .(根据gitignore重新添加所有文件)

然后像往常一样提交

遵循以下步骤:

  1. 添加路径到gitignore文件

  2. 执行该命令

    git rm -r --cached foldername
    
  3. commit changes as usually.

  1. 将您的文件名/文件路径添加到.gitignore文件中。
  2. 现在在git bash git rm --cached file/path/from/root/folder中运行命令
  3. 现在使用git commit提交代码。

现在,在git status命令中不应该跟踪该文件。

我倾向于忘记/懒得读这些git命令是做什么的。所以我是这样做的:

  • 我将所有我想忽略的文件暂时移到存储库之外
  • 我提交这些“已删除文件”;在我的git GUI(他们现在是不跟踪)
  • 我更新了.gitignore文件
  • 我将文件移回存储库(或者删除它们,如果这是我的意图)

İf你已经提交,你可以使用这个:

  1. 添加文件夹路径到。gitignore文件。
  2. 使用此命令删除exe文件(对于其他文件扩展名,只需写入“;*extension"”)。 李# EYZ0 < / >
  3. 提交更改。

您应该对想要删除的每个扩展执行此操作。

编辑.gitignore文件后。

git rm -r --cached ./ &&  git add ./ && git commit -a -m "Removing ignored files" && git push