将忽略的文件保持在git状态之外

时间:2009-11-30 10:02:27

标签: git gitignore

我想阻止Git在git status中显示被忽略的文件,因为在已更改但未更新的文件列表中包含大量文档和配置文件,会使列表中的一半 - 无用的。

Git显示这些文件是否正常?

我将忽略信息放在Git存储库根目录下的.gitignore文件中,并且在使用git add .时不会添加它们,但似乎它们也没有被完全忽略,因为它们显示在上述列表中,显示在git ls-files --others -i --exclude-standard打印的列表中。只有与~/.gitignore中的模式匹配的文件才会显示在那里。

难道是因为在早期阶段我没有忽略它们,因此它们至少犯了一次?

10 个答案:

答案 0 :(得分:192)

当我找到in this post时,.gitignore仅适用于未跟踪的文件。如果您将文件添加到存储库,则可以:

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

或通过

将其从存储库中删除
git rm --cached <file>

修改

This article也解释了

答案 1 :(得分:12)

我也遇到过这个问题,这可能是因为你在GIT的初始提交流程中将被忽略的目录/文件添加到.gitignore后被添加到.gitignore。

所以你需要像这样清除git跟踪缓存:

git rm --cached -r [folder/file name]

可在此处阅读更详细的说明: http://www.frontendjunkie.com/2014/12/stop-git-from-tracking-changes-to.html

上述命令还从远程GIT源删除了文件夹/文件的残余。所以你的GIT回购变得干净了。

答案 2 :(得分:2)

问题可能是此文件仍在git缓存中。要解决此问题,需要重置git缓存。

重置git缓存。这将从索引中删除所有内容。

git rm -r --cached . 

再次添加所有文件:

git add . 

提交:

git commit -m ".gitignore was fixed." 

答案 3 :(得分:1)

这肯定有效,

git rm --cached -r [folder/file name]

答案 4 :(得分:1)

我假设您不想添加tmp目录(Visual Studio Platform)

1-在您当地的.gitignore文件中添加以下行

## ignore tmp
/tmp/
./tmp/

3-备份并在本地删除tmp文件夹。 (在其他地方备份。例如桌面?)

4-提交本地更改而不是同步到远程(例如github)。

完成这些步骤后,您的tmp目录将不会再次上传。

答案 5 :(得分:0)

来自 man git-lsfiles

-i, --ignored
Show ignored files in the output. Note that this also reverses any exclude list present.

我个人倾向于在源代码树中保留doxygen文件,所以我只是将它添加到我的.gitignore(它位于我的源代码树的最顶层目录中):

docs/*

希望有所帮助。

答案 6 :(得分:0)

像这样

git --ignored myfolder

仅显示 myfolder

的状态

答案 7 :(得分:0)

以下步骤仅适用于未跟踪的文件。 此信息适用于以下配置:

Platform: linux

Git version: git version 1.8.3.1

在以下位置的“排除”文件中放置要忽略的文件列表。

<path till .git directory>/.git/info/exclude

“排除”文件的初始内容

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

“排除”文件的最终内容

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~


*.tar
*.gch

答案 8 :(得分:0)

根据接受的答案,您可以假定文件未更改,这样您在本地计算机上所做的任何操作都不会提交到远程分支。

类似git update-index --assume-unchanged src/main/resources/config.properties 的东西,其中src / main.resources / config.properties是在项目中查找该文件的路径的示例。

现在,如果要从存储库中完全删除文件,则可能要使用remove cached代替`git rm --cached

这种情况可能适用于以下情况:

假设我有一个存储密码的文件。我最初使用错误的详细信息提交了该文件,只是为了让我的同事在他们的计算机上拥有相同的文件。但是,现在我在本地计算机上添加了正确的详细信息。如何防止使用现在正确的密码详细信息再次误提交该文件?

答案 9 :(得分:0)

在 .gitignore 文件中进行更改之后。 按照这些简单的步骤操作

import os
def log_count("/mydir"):
   count = 0
   for root, dirs, files in os.walk("/mydir"):
       for file in files:
           if file.endswith(".LOG"):
                count += 1
    return count

检查

oc adm policy add-scc-to-user anyuid -z default