95

昨晚我有一个干净的工作目录,并从 Git 存储库中引入了一个克隆。但现在我的本地服务器创建并包含一个我想忽略的 stats 文件夹。

当我运行 git status 时,我似乎无法让 Git 忽略此文件夹。

On branch master
Your branch is ahead of 'origin/master' by 1 commit.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file: app_public/views/pages/privacy.php
    new file: app_public/views/pages/terms.php
    new file: public_html/stats/ctry_usage_200908.png
    new file: public_html/stats/daily_usage_200908.png
    new file: public_html/stats/dns_cache.db
    new file: public_html/stats/hourly_usage_200908.png
    new file: public_html/stats/index.html
    new file: public_html/stats/usage.png
    new file: public_html/stats/usage_200908.html
    new file: public_html/stats/webalizer.current
    new file: public_html/stats/webalizer.hist

Changed but not updated:
    modified: .gitignore

我在 .gitignore 中添加了几行不同的行,但它仍在尝试添加它们:

public_html/stats
public_html/stats/**
public_html/stats/**/*
public_html/stats/*
4

5 回答 5

107

试试/public_html/stats/*

但是由于git status报告中的文件已提交,这意味着您已经手动添加了它们。当然,在这种情况下,忽略它为时已晚。你可以git rm --cache他们(IIRC)。

于 2009-08-26T14:56:35.107 回答
103

为此有两种情况

案例 1:文件已添加到 git repo。

案例2:新建文件,使用时状态仍显示为未跟踪文件

git status

如果您有案例 1:

第 1 步: 然后运行

git rm --cached filename 

从 git repo 缓存中删除它

如果它是一个目录,那么使用

git rm -r --cached  directory_name

第2 步:如果案例 1.gitignore结束,则在您的 git存储库中创建新文件

第 3 步:使用以下命令告诉 git 忽略/假设文件未更改

git update-index --assume-unchanged path/to/file.txt

第 4 步:现在,使用编辑器 nano、vim、geany 等中的 git status open 检查状态.gitignore...任何一个,添加要忽略的文件/文件夹的路径。如果它是一个文件夹,则用户folder_name/*忽略所有文件。

如果你还是不明白,请阅读文章 git ignore file link。

于 2013-04-26T11:41:42.910 回答
17

从“git help ignore”我们了解到:

如果模式以斜线结尾,则出于以下描述的目的将其删除,但它只会找到与目录的匹配项。换句话说, foo/ 将匹配目录 foo 和它下面的路径,但不会匹配常规文件或符号链接 foo(这与 pathspec 在 git 中的一般工作方式一致)。

因此你需要的是

public_html/stats/

于 2009-08-26T15:02:38.640 回答
6

/public_html/stats/*

$ ~/myrepo> ls public_html/stats/
bar baz foo
$ ~/myrepo> cat .gitignore 
public_html/stats/*
$ ~/myrepo> git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   .gitignore
nothing added to commit but untracked files present (use "git add" to track)
$ ~/myrepo>
于 2009-08-26T15:06:50.163 回答
2

我非常懒惰。我只是做了一个搜索,希望找到解决这个问题的捷径,但没有得到答案,所以我敲了这个。

~/bin/IGNORE_ALL

#!/bin/bash
# Usage: IGNORE_ALL <commit message>                                                                                                                             
git status --porcelain | grep '^??' | cut -f2 -d' ' >> .gitignore              
git commit -m "$*" .gitignore 

EG:IGNORE_ALL 添加了忽略的统计信息

这只会将所有忽略文件附加到您的 .gitignore 并提交。请注意,您可能希望之后向文件添加注释。

于 2012-10-03T02:22:59.083 回答