【问题标题】:Why is .gitignore not ignoring my files?为什么 .gitignore 不忽略我的文件?
【发布时间】:2018-01-06 02:37:29
【问题描述】:

见下图。我的 .gitignore 文件应该忽略 src/dist 中的所有文件,但不是。

【问题讨论】:

    标签: git visual-studio-code gitignore


    【解决方案1】:

    首先检查.gitignore 编码。
    确保编码 id utf-8.
    然后使用git rm --cached filename 未跟踪不需要的文件 现在你的问题解决了?

    【讨论】:

      【解决方案2】:

      gitignore 只忽略未跟踪的文件。您的文件被标记为已修改 - 表示它们过去已提交,现在 git 会跟踪它们。

      要忽略它们,您首先需要删除它们,git rm 它们,提交然后忽略它们。

      【讨论】:

        【解决方案3】:

        按照以下步骤操作 gitignore

        1. .gitignore 文件中进行更改。

        2. 运行git rm -r --cached . 命令。

        3. 运行git add . 命令

        4. git commit -m "Commit message"

        【讨论】:

        • 我必须添加 git push -u origin main 才能看到变化,但这对我有用,继续加油!
        【解决方案4】:

        对于我项目中的一些文件,我需要使用git filter-branch,这在this answare 中有更好的解释。

        【讨论】:

          【解决方案5】:

          如果您使用的是 VS Code

          检查.gitignore 文件的编码类型。如果不是,请将其更改为UTF-8。 选择Reopen with Encoding 选项以更改文件编码。

          这对我有用!

          【讨论】:

            【解决方案6】:

            我遇到了同样的问题,然后我意识到我没有正确创建 .gitignore 文件。

            就我而言,出于某种原因,我创建了一个 .gitignore.txt 文件。即使您删除了“.txt”,Git 仍会跟踪 .gitignore 文件中的文件。扩展并保存。

            尝试删除您的旧文件并在终端中通过'touch .gitignore' 创建一个新的 .gitignore 文件,这为我解决了问题。

            【讨论】:

              【解决方案7】:

              .gitignore 文件可确保未被Git 跟踪的文件保持未跟踪状态。

              仅将文件夹/文件添加到.gitignore 文件不会取消对它们的跟踪——它们仍将由Git 跟踪。

              要取消跟踪文件,必须从存储库中删除.gitignore 文件中列出的跟踪文件。然后重新添加它们并提交您的更改。

              最简单、最彻底的方法是删除并缓存存储库中的所有文件,然后将它们全部添加回来。不会跟踪.gitignore 文件中列出的所有文件夹/文件。从存储库的顶部文件夹中运行以下命令:

              git rm -r --cached .
              git add .
              

              然后提交您的更改:

              git commit -m "Untrack files in .gitignore"
              

              请注意,任何先前包含不需要的文件的提交都将保留在提交历史记录中。推送到 GitHub 时,请注意可能包含 .envclient_secret.json 文件的提交历史记录。

              最佳实践是创建一个 .gitignore 文件,并在启动项目时使用您不想跟踪的文件夹/文件填充它。但是,在意识到正在跟踪和存储不需要的文件后,通常需要添加到 .gitignore 文件中。

              【讨论】:

              • 感谢您的回答。这真的很有帮助。也不要忘记将 repo 推送到 git
              • 在使用git rm -r --cached . 回滚所有更改后,也可以重新添加所有不应使用 .gitignore 排除的文件。
              • 这应该被标记为正确答案
              • 这是更完整的答案
              • 这应该被标记为正确答案
              【解决方案8】:

              最好在开始和提及我们想要忽略的文件时创建 .gitignore 文件。 如果你想忽略一些文件然后执行 git rm -r --cached

              【讨论】:

              • 有时候,我们需要一台时光机……
              【解决方案9】:

              你可以用这个,

              git rm -r --cached ./node_modules
              

              如果你想忽略node_modules,例如

              【讨论】:

                【解决方案10】:

                首先从你的 git repo 中删除 index.lock 文件

                rm -f .git/index.lock
                

                然后添加.gitignore

                git add .gitignore
                

                【讨论】:

                • 您能否详细说明这些操作的作用?
                【解决方案11】:

                看看这个:.gitignore is not working 尤其是 ADTC 的评论:

                确保您的 .gitignore 文件使用 ANSI 或 UTF-8 编码。如果它使用 像 Unicode BOM 之类的其他东西,Git 可能无法读取 文件。 – ADTC 2017 年 12 月 14 日 12:39

                【讨论】:

                  【解决方案12】:

                  .gitignore 仅忽略尚不属于存储库的文件。如果您已经git added 一些文件,它们的更改仍将被跟踪。 要从您的存储库(但不是从您的文件系统)中删除这些文件,请在它们上使用 git rm --cached

                  【讨论】:

                  • git rm --cached file_name.ext 我可以为一个文件更新 gitignore。谢谢。
                  • 我这样做了,但 GitHub 仍然想跟踪和添加它们。
                  • git rm -r --cached 文件夹递归删除文件夹上的缓存
                  • 忽略文件对我不起作用,但我忽略了像 Pablo 提到的 dist 文件夹,它工作得很好!
                  • git rm -r --cached 工作。谢谢。
                  猜你喜欢
                  • 2014-07-06
                  • 2022-11-16
                  • 2015-11-08
                  • 2019-04-29
                  • 2018-05-02
                  • 2016-12-25
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多