【问题标题】:.gitignore after commit [duplicate]提交后的.gitignore [重复]
【发布时间】:2011-09-25 23:52:34
【问题描述】:

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

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

【问题讨论】:

标签: git github gitignore


【解决方案1】:

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

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

git rm --cached path/to/ignored.exe

【讨论】:

  • 这是否意味着我已经单独删除了每个 .exe
  • 你可能可以批量处理这个,但我不知道它在 windows 下是如何工作的
【解决方案2】:

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

没有。

做到这一点的“最佳”方法是使用git filter-branch,如下所述:

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

注意您将改写历史。如果您发布了包含意外添加文件的任何修订,这可能会给这些公共分支的用户带来麻烦。通知他们,或者考虑一下删除文件的必要性。

注意在标签存在的情况下,始终使用--tag-name-filter cat 选项到git filter-branch。当您以后意识到自己需要它时,它永远不会痛,并且会为您省去头痛

【讨论】:

  • 我运行了这个命令,它显示了 Rewrite 57c1f1f04a3ed01f50c3260714cfc82c973ac816 (3/3) 警告:Ref 'refs/heads/master' 没有改变,什么也没发生
  • 这是一个警告,很可能意味着主分支(还)没有包含任何要删除的文件的修订。您可以轻松检查。如果有问题,请更新问题。 PS: 使用 -- --all 一次重写所有(本地)分支
【解决方案3】:

如果您尚未推送更改:

git rm -r --cached .
git add .
git commit -m 'clear git cache'
git push

【讨论】:

    【解决方案4】:

    我必须删除 .idea 和 target 文件夹,在阅读完所有 cmets 后,这对我有用:

    git rm -r .idea
    git rm -r target
    git commit -m 'removed .idea folder'
    

    然后推送到master

    【讨论】:

    • .idea 是我的问题我想这也是你的问题:)
    【解决方案5】:

    即使在您删除文件然后提交之后,您仍然会在历史记录中保留这些文件。要删除这些,请考虑使用BFG Repo-Cleaner。它是 git-filter-branch 的替代品。

    【讨论】:

      【解决方案6】:

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

      您必须 git rm --cached 删除您不希望在 repo 中的文件。 (--cached 因为你可能想保留本地副本但从仓库中删除。)所以如果你想从你的仓库中删除所有 exe,请执行

      git rm --cached /\*.exe
      

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

      【讨论】:

      • @Madhur Ahuja 实际上,如果你这样做git rm /\*.exe,它将删除你回购中的所有 exe 文件
      • /\'s 是干什么用的?
      • @Costa 他们在那里逃避星号,以防止外壳解释它,因为它是为git 设计的。
      • 警告:文件保存在本地,这是真的……但是运行git pull 的其他用户会看到他们的文件被删除。
      • Undo last commit 在 VS 代码中很有帮助,只是想提一下
      猜你喜欢
      • 2021-12-31
      • 1970-01-01
      • 2014-10-14
      • 2013-03-03
      • 2015-04-17
      • 2014-11-27
      • 2023-03-27
      • 2018-07-25
      • 2011-11-23
      相关资源
      最近更新 更多