保持被忽略的文件远离 git 状态

我希望停止 Git 在 git status中显示被忽略的文件,因为在 更改了,但没有更新文件列表中有大量的文档和配置文件,使得该列表半无用处。

Git 显示这些文件正常吗?

我把忽略信息放在 Git 存储库根目录的 .gitignore文件中,当使用 git add .时,它们没有被添加,但是它们似乎也没有被完全忽略,因为它们出现在前面提到的列表中,而 不要出现在 git ls-files --others -i --exclude-standard打印的列表中。只有符合 ~/.gitignore模式的文件才会出现在那里。

难道是因为在早期阶段我没有忽视他们,所以他们至少犯了一次错误?

104435 次浏览

来自 Git-lsfiles:

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

就个人而言,我倾向于在源代码树中保留 doxygen 文件,所以我只是简单地将它添加到我的。Gitignore (位于源代码树的最顶层目录中) :

docs/*

希望能帮上忙。

正如我发现的 在这个职位.gitignore只适用于未跟踪的文件。如果您将文件添加到存储库,您可以:

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

或从存储库中删除它们

git rm --cached <file>

剪辑

这篇文章也解释了这一点

像这样

git --ignored myfolder

只显示 我的文件夹的状态

我也遇到过这个问题,可能是因为您将被忽略的目录/文件添加到。GIT 在初始提交流中将它们标记为“将被跟踪”之后。

因此,您需要像下面这样清除 git 跟踪缓存:

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

更详细的解释可以在这里阅读: Http://www.frontendjunkie.com/2014/12/stop-git-from-tracking-changes-to.html

上面的命令还从远程 GIT 源中删除了文件夹/文件的残余部分。这样你的 GIT 回购就清白了。

这肯定管用,

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

我假设您不希望添加 tmp 目录(VisualStudio 平台)

1-将下面的代码行添加到本地.gitignore 文件

## ignore tmp
/tmp/
./tmp/

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

4-将更改提交到 Local 而不是 Sync 到 Remote (例如 github)。

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

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

排成一列

git rm --cached <file>

整个项目

重置 git 缓存。如果您在.gitignore 文件未添加时提交了项目,这是一个很好的命令。

git rm -r --cached .

提交更改

git add .
git commit -m ".gitignore was fixed."

以下步骤仅适用于 无法追踪的文件。 此信息适用于以下配置:

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

根据已接受的答案,您可以使用 假设文件没有改变,这样无论您在本地机器上做什么,都不会提交到远程分支。

类似于 < code > git update-index ——  · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 其中 src/main.resources/config.properties 是用于在项目中查找该文件的路径的示例。

现在,如果您希望从存储库中获取 完全删除文件,那么可以使用 remove cached代替“ git rm —— cached”

这一设想可适用于下列情况:

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

在. gitignore 文件中进行更改后。 遵循以下简单步骤

git rm -r --cached .


Run git add .


git commit -m "Commit message"

检查一下

git status