1369

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

4

19 回答 19

1934

.gitignore在项目目录中创建一个名为的文件。通过在文件中输入目录名称来忽略目录(附加斜杠):

dir_to_ignore/

更多信息在这里

于 2008-12-05T12:54:10.407 回答
225

默认情况下,.gitignore当文件名实际上是.gitignore.txt.

Git不会使用.gitignore.txt

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

非命令行解决方案:

您可以将文件重命名为“.gitignore”。,它将创建“.gitignore”
于 2010-07-22T11:23:07.430 回答
130

似乎忽略文件和目录有两种主要方法:

  1. .gitignore

    • .gitignore文件放入存储库的根.git目录中(在 Windows 中,确保看到真实的文件扩展名,然后制作.gitignore.(最后的点是空文件扩展名))
    • 进行全局配置~/.gitignore_global并运行git config --global core.excludesfile ~/.gitignore_global以将其添加到您的 Git 配置中

    注意:之前跟踪的文件可以通过运行取消跟踪git rm --cached filename

  2. 存储库排除- 对于不需要共享的本地文件,您只需将文件模式或目录添加到文件中.git/info/exclude。这些规则未提交,因此其他用户看不到它们。更多信息在这里

要在忽略文件列表中设置例外,请参阅此问题

于 2012-05-01T10:30:33.807 回答
46

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

但在 Windows 资源管理器中,您必须为文件提供名称。您不能仅使用扩展名创建文件。诀窍是创建一个空文本文件并转到命令提示符并将文件名更改为.gitignore

ren "New Text Document.txt" .gitignore

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

于 2010-03-25T18:14:52.417 回答
45

我在Windows 资源管理器中创建文件时遇到了一些问题.

一种解决方法是进入命令外壳并使用“编辑”创建一个新文件。

于 2008-12-05T13:50:55.100 回答
39

要在 Git 中忽略整个目录,最简单的方法是在目标目录中包含一个 .gitignore 文件,该文件仅包含“*”。

一个说明性的例子,

示例系统

/root/
    .gitignore
    /dirA/
        someFile1.txt
        someFile2.txt
    /dirB/
        .gitignore
        someFile3.txt
        someFile4.txt

目标

  • 忽略 /dirB/ 的内容

顶级 (/root/.gitignore)

  • 这是您的标准 gitignore 信息所在的位置(例如“~Untitled.docx”、一些私有目录等)。如果需要,“dirB/”当然可以放在这里

忽略的目录 (/root/dirB/.gitignore)

  • Git 在文件系统的每一步都监视 gitignore,因此只要您忽略要应用的规范,然后将其扔进去,为该目录生成一个新的 gitignore

  • dirB/.gitignore 然后读取为“*”并且所有内容都被完全忽略,它本身和所有文件!

就这么简单:)

于 2016-06-15T21:51:19.767 回答
29

如果你想维护一个文件夹而不是其中的文件,只需在文件夹中放置一个“.gitignore”文件,以“*”作为内容。该文件将使 Git 忽略存储库中的所有内容。但.gitignore将包含在您的存储库中。

$ git add path/to/folder/.gitignore

如果您添加一个空文件夹,您会收到此消息(.gitignore 是一个隐藏文件)

The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added

因此,使用“-f”强制添加:

$ git add path/to/folder/.gitignore -f
于 2012-06-29T10:29:15.103 回答
23

在 Windows 中,有一个额外的斜线。排除.gitignore中的单个目录

dir_to_exclude/

可能会工作,但不包括所有目录

/

当您的目录中有带空格(如 )的文件名时会导致问题my file.txt:Git Bash 使用反斜杠(如 )转义这些空格,my\ file.txt并且适用于 Windows 的 Git 不区分/\

要排除所有目录,最好使用:

**/

两个连续的星号表示目录内容。

于 2014-01-13T13:49:49.260 回答
22

万一您需要排除子文件夹,您可以使用**通配符排除任何级别的子目录。

**/build/output/Debug/
于 2018-02-17T00:40:58.190 回答
21

您可以使用以下内容创建“.gitignore”文件:

*
!.gitignore

这个对我有用。

于 2015-02-05T14:27:04.637 回答
16

在您的\.git\info项目目录中还有一个排除文件,它实际上与.gitignore(我认为)相同。您可以在其中添加要忽略的文件和目录。

于 2011-02-10T10:12:00.060 回答
12

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

/.git/info/排除

并将您想要的目录添加到文件末尾,如下所示:

# 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”添加到要忽略的文件和目录列表中。

于 2018-04-04T21:38:12.507 回答
8

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

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

ps $GIT_DIR通常是名为的隐藏文件夹.git

于 2012-02-15T19:43:43.637 回答
8

在 Unix 上:

touch .gitignore

在 Windows 上:

echo > .gitignore

在终端中执行的这些命令将.gitignore在当前位置创建一个文件。

然后只需向该.gitignore文件添加信息(例如使用 Notepad++),哪些文件或文件夹应该被忽略。保存您的更改。就是这样 :)

更多信息:.gitignore

于 2018-06-27T11:22:09.507 回答
7

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

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

...与.gitignore你描述的。这将为您提供git status如下输出:

$ 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 status遗嘱将如下所示:

$ 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。我只是懒得处理这个测试用例。)

于 2012-06-29T10:11:02.440 回答
6

在 Windows 和 Mac 上,如果您想忽略当前目录中名为 Flower_Data_Folder 的文件夹,您可以执行以下操作:

echo Flower_Data_Folder >> .gitignore

如果它是一个名为的文件data.txt

echo data.txt >> .gitignore

如果是像“Data/passwords.txt”这样的路径

echo "Data/passwords.txt" >> .gitignore. 
于 2018-08-14T11:17:42.233 回答
2

我有类似的问题。我使用与 Linux 人员共享存储库的 Windows 工具链工作,他们很乐意在给定文件夹中创建具有相同(大小写除外)名称的文件。

效果是我可以克隆存储库并立即拥有数十个“修改过的”文件,如果我签入这些文件,将会造成严重破坏。

我将 Windows 设置为区分大小写,将 Git 设置为不忽略大小写,但它仍然失败(显然在 Win32 API 调用中)。

如果我 gitignore 文件,那么我必须记住不要跟踪 .gitignore 文件。

但我在这里找到了一个很好的答案:

http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html

于 2012-08-06T15:01:49.960 回答
1

只需.gitignore在您的项目文件夹中创建文件然后在其中添加文件夹的名称,例如:

frontend/node_modules
于 2020-02-11T23:58:42.340 回答
1

这对某些人来说可能非常明显,但我确实从其他答案中理解了这一点。

在目录中创建 .gitignore 文件本身并没有任何作用。您必须将 .gitignore 作为文本文件打开并写入您希望它忽略的文件/目录,每个文件/目录各占一行。

所以 cd 到 Git 存储库目录

touch .gitignore
nano .gitignore

然后写下您想要忽略的文件和/或目录的名称及其扩展名(如果相关)。

此外,.gitignore 是某些操作系统(例如 Mac)上的隐藏文件,因此您需要ls -a查看它,而不仅仅是 ls。

于 2020-12-19T17:57:53.977 回答