在Windows上忽略Git仓库中的目录

我怎样才能在Windows上使用msysgit忽略Git中的目录或文件夹?

在您的项目目录中创build一个名为.gitignore的文件。 通过在文件中input目录名(用斜线添加)来忽略目录:

 dir_to_ignore/ 

更多信息在这里 。

当事实上文件名是.gitignore.txt时,默认情况下,Windows资源pipe理器将显示.gitignore.txt

Git不会使用.gitignore.txt

而且你不能将文件重命名为.gitignore因为explorer认为它是一个没有名字的gitignoretypes的文件。

非命令行解决scheme:

 您可以将文件重命名为“.gitignore”。 它会创build“.gitignore” 

看来忽略文件和目录有两个主要方法:

  1. 的.gitignore

    • .gitignore文件放到你的repo的根.git (在Windows下,确保你看到的是真正的文件扩展名 ,然后把.gitignore. (最后一点做成空文件扩展名))
    • 进行全局configuration~/.gitignore_global并运行git config --global core.excludesfile ~/.gitignore_global将其添加到你的git config

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

  2. 回购排除 – 对于不需要共享的本地文件,只需将文件模式或目录添加到文件.git/info/exclude 。 这些规则不提交,所以其他用户不能看到更多信息

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

我有一些问题在Windows资源pipe理器中创build一个文件。 在开始。

解决方法是进入命令行界面并使用“编辑”创build一个新文件

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

但在Windows资源pipe理器中,您必须为文件提供一个名称,您不能仅使用扩展名创build文件,技巧是创build一个空文本文件并转至命令提示符,并将文件的名称更改为.gitignore

 ren "New Text Document.txt" .gitignore 

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

希望它回答你的问题

在Windows中,还有一些额外的斜杠。 用.gitignore排除单个目录

dir_to_exclude /

将可能工作,但排除所有的目录

/

当你的目录中有空格的文件名时(比如my file.txt ),会导致问题:Git bash使用反斜杠(如my\ file.txt )来转义这些空格,Git for Windows不区分/\

排除所有目录更好地使用:

** /

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

另外在你的\.git\info项目目录中有一个与.gitignore (我认为)实际上是相同的排除文件。 你可以添加文件和目录来忽略。

我有一些问题让git拾取Windows上的.gitignore文件。 $ GIT_DIR / info / exclude文件似乎总是工作。 但是,这种方法的缺点是,$ GIT_DIR目录中的文件不包含在签入中,因此不能共享。

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

如果你想保留一个文件夹,并没有其中的文件,只需把“.gitignore”文件作为内容。 该文件忽略来自存储库的所有内容。 但.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 

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

 * !.gitignore 

它适用于我和简单。

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

 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可以看到caching目录中有不带标记的文件,但只会报告目录。)要解决这个问题,请确保已经添加并提交了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 ,我只是懒于使用这个testing用例。)

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

举例说明,

示例系统

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

目标

  • 忽略/ dirB /

顶级.gitignore(/root/.gitignore)

  • 这是你的标准gitignore信息去的地方

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

  • 这个文件只读为'*',目录被完全忽略,本身和所有文件!

就这么简单:)

我有类似的问题,我工作在一个Windows工具链与Linux家伙共享回购,他们很高兴地创build文件与给定文件夹中的[案例]名称相同。

其效果是,我可以克隆回购,并立即有几十个“修改”的文件,如果我检查会造成浩劫。

我有窗户设置为区分大小写和混帐不忽略的情况下,但它仍然失败(在win32 API调用显然)。

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

但是我在这里find了一个很好的答案http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html

克里斯