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


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

dir_to_ignore/

这里有更多信息。


我在Windows资源管理器中使用创建文件时遇到一些问题。在开始时。

解决方法是进入commandshell并使用“edit”创建一个新文件。


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

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

ren "New Text Document.txt" .gitignore

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


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

Git不会使用.gitignore.txt

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

非命令行解决方案:

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

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


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

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

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


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

.git忽略将.gitignore文件放置到存储库的根目录中,而不是.git文件夹(在Windows中,确保看到真正的文件扩展名,然后使.gitignore.(结尾处的点为空文件扩展名))生成全局配置~/.gitignore_global并运行git-config--global-core.excludsfile~/.gigignore_global将其添加到git配置中注意:以前跟踪的文件可以通过运行gitrm--缓存文件名来取消跟踪存储库排除-对于不需要共享的本地文件,只需将文件模式或目录添加到文件.git/info/exclude中即可。这些规则未提交,因此其他用户看不到。这里有更多信息。

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


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

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


如果您想维护一个文件夹而不是其中的文件,只需在文件夹中放置一个“.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

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

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

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

如果我忽略了这些文件,那么我必须记住不要跟踪.gitignore文件。

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

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


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

目录_排除/

将可能工作,但排除所有具有

/

当目录中的文件名带有空格(如my-file.txt)时会导致问题:GitBash用反斜杠(如my\file.txt)转义这些空格,而Git for Windows无法区分/和\。

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

**/

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


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

*
!.gitignore

这对我有用。


若要忽略整个目录,请在其中放置.gitignore的“*”。

例如

示例系统

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

Goal

忽略dirB的内容/

顶级(/root/.gitignore)

你可以在这里“dirB/”

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

或者你可以在这里“*”

Git在文件系统的每一步都监视gitignore。所以这里我选择dirB/.gitignore作为“*”来忽略dirB/,包括其中的所有文件和子磁盘。

多恩☺️


为了防止需要排除子文件夹,可以使用**通配符排除任何级别的子目录。

**/build/output/Debug/

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

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


在Unix上:

touch .gitignore

在Windows上:

echo > .gitignore

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

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

更多信息:.gitignore


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

echo Flower_Data_Folder >> .gitignore

如果是名为data.txt的文件:

echo data.txt >> .gitignore

如果是类似“Data/passwords.txt”的路径

echo "Data/passwords.txt" >> .gitignore. 

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

frontend/node_modules

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

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

所以cd到Git存储库目录

touch .gitignore
nano .gitignore

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

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


暂时忽略已在git中的目录/文件:

我在一个多项目等级的项目中有很多项目,它们可能需要很长时间才能删除,它们几乎相同但不同。有时我想通过将它们全部删除来将它们从渐变构建中删除。吉特终究能把它们弄回来。然而,我也不希望他们以git状态出现。因此,我使用以下简单程序:;

删除我不想要的文件和文件夹。验证生成仍然有效告诉git暂时忽略已删除的文件(我们可以找回它们)


gitls文件--已删除-z | git更新索引--假定-z不变--标准输入

在你想要他们回来之前,不要带着他们过日子。然后,运行与之前相同的命令,但切换为“假设不变”或“不假设不变”


git ls文件--已删除-z | git更新索引--不假定未更改-z--标准输入