如何在Windows上使用msysgit忽略Git中的目录或文件夹?


当前回答

我认为问题是你的工作树是这样的:

a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore

…用你描述的.gitignore。这将为您提供git状态输出,如:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
#    a-cache/
#    b-cache/

…如果index.html文件尚未添加到存储库中。(Git发现缓存目录中有未忽略的文件,但它只报告目录。)要解决此问题,请确保您已添加并提交了index.html文件:

git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"

…然后您的git状态将如下所示:

$ git status
# On branch master
# 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)

(很明显,你也希望提交.gitignore。我只是懒得处理这个测试用例。)

其他回答

当其他一切都失败时,尝试编辑文件

/.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]
# *~
assets/
compiled/

我将文件夹“assets”和“compiled”添加到要忽略的文件和目录列表中。

要指示Git忽略某些文件或文件夹,必须创建.gitignore文件。

但在Windows资源管理器中,您必须提供文件的名称。您无法创建仅具有扩展名的文件。诀窍是创建一个空文本文件,然后转到命令提示符,将文件名更改为.gitignore:

ren "New Text Document.txt" .gitignore

现在用您最喜欢的文本编辑器打开文件,并添加您希望忽略的文件/文件夹名称。也可以使用通配符,如*.txt。

我在让Git在Windows上获取.gitignore文件时遇到了一些问题。但$GIT_DIR/info/exclude文件似乎始终有效。

然而,这种方法的缺点是$GIT_DIR目录中的文件不包含在签入中,因此不共享。

p.s.$GIT_DIR通常是名为.GIT的隐藏文件夹

默认情况下,当文件名为.gitignore.txt时,Windows资源管理器将显示.gitignore。

Git不会使用.gitignore.txt

您不能将文件重命名为.gitignore,因为Windows资源管理器认为它是一个没有名称的gitignore类型的文件。

非命令行解决方案:

You can rename a file to ".gitignore.", and it will create ".gitignore"

您可以创建包含以下内容的“.gitignore”文件:

*
!.gitignore

这对我有用。