将.gitignore应用于提交的文件

将.gitignore应用于提交的文件,git,Git,我已经提交了大量现在想忽略的文件。我如何告诉git现在从将来的提交中忽略这些文件 编辑:我也想从存储库中删除它们。它们是在构建之后创建的文件,或用于特定于用户的工具支持 编辑.gitignore以匹配要忽略的文件 git-rm--cached/path/to/file 另见: 编辑.gitignore以匹配要忽略的文件 git-rm--cached/path/to/file 另见: 编辑.gitignore后要匹配被忽略的文件,可以执行git ls files-ci--excl

我已经提交了大量现在想忽略的文件。我如何告诉git现在从将来的提交中忽略这些文件

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

  • 编辑
    .gitignore
    以匹配要忽略的文件
  • git-rm--cached/path/to/file
  • 另见:

  • 编辑
    .gitignore
    以匹配要忽略的文件
  • git-rm--cached/path/to/file
  • 另见:


    编辑
    .gitignore
    后要匹配被忽略的文件,可以执行
    git ls files-ci--exclude standard
    查看排除列表中包含的文件;然后你就可以做了

    • Linux/MacOS:
      git ls文件-ci——排除标准-z | xargs-0 git rm——缓存
    • Windows(PowerShell):
      git ls文件-ci--排除标准|%{git rm--缓存的“$”}
    • Windows(cmd.exe):
      for/F“令牌=*%a in('git ls files-ci--exclude standard')do@git rm--cached“%a”
    将其从存储库中删除(而不从磁盘中删除)

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

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


    现在,您可以在回购协议中键入
    git apply gitignore
    ,它将为您完成这项工作

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

    • Linux/MacOS:
      git ls文件-ci——排除标准-z | xargs-0 git rm——缓存
    • Windows(PowerShell):
      git ls文件-ci--排除标准|%{git rm--缓存的“$”}
    • Windows(cmd.exe):
      for/F“令牌=*%a in('git ls files-ci--exclude standard')do@git rm--cached“%a”
    将其从存储库中删除(而不从磁盘中删除)

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

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


    现在,您可以在回购协议中键入
    git apply gitignore
    ,它将为您完成这项工作

    将文件保留在回购协议中,但忽略将来对其所做的更改:

    git update-index --assume-unchanged <file>
    
    原答案的功劳

    将文件保留在回购协议中,但忽略将来对其所做的更改:

    git update-index --assume-unchanged <file>
    
    原答案的功劳

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

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

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

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

    确保您的实际回购是最新版本

  • 根据需要编辑
    .gitignore
  • git rm-r——缓存。
    (删除所有文件)
  • git add.
    (重新添加所有文件)

  • 然后照常提交

    确保您的实际回购是最新版本

  • 根据需要编辑
    .gitignore
  • git rm-r——缓存。
    (删除所有文件)
  • git add.
    (重新添加所有文件)
  • 然后按常规提交

    执行以下步骤:

  • 将路径添加到
    gitignore
    文件

  • 运行此命令

    git rm -r --cached foldername
    
  • 像往常一样提交更改

  • 遵循以下步骤:

  • 将路径添加到
    gitignore
    文件

  • 运行此命令

    git rm -r --cached foldername
    
  • 像往常一样提交更改



  • 不过有很多文件。我不想对每一个都这样做。文件在任何公共目录中吗?如果不是,问题就归结为一个shell使用问题,而不是git问题。确实需要一个“我在初始提交之前忘记添加我的.gitignore”模式。答案就在下面。它要求我添加标志-r才能这样做。尽管有很多文件。我不想对每一个都这样做。文件在任何公共目录中吗?如果没有,问题将归结为一个shell使用问题,而不是git问题。确实需要一个“我在初次提交之前忘记添加我的.gitignore”模式。答案在下面。它要求我添加标志-r以便能够这样做。@Wooble的可能重复答案可能类似,但这个问题恰恰描述了我所面临和需要解决的问题。这个答案直接解决了标题问题,对你的git回购协议做了最小的修改:可能重复@Wooble这个答案可能类似,但这个问题恰恰描述了我所面临和需要解决的问题。这个答案直接解决了标题问题,只需对git repo进行最小的更改:我认为xargs for mac没有-r。。。或者我的车太旧了,我不知道。。。为什么是
    在git之前?好。。。mine one充当
    别名apply gitignore=“git ls files-ci--exclude standard-z | xargs-0 git rm--cached”
    。tks!在Windows上,
    for/F“tokens=*%a in('git ls files-ci--exclude standard')do@git rm--cached“%a”
    这刚刚删除了my.gitignore