在Windows上忽略Git repos中的目录

时间:2008-12-05 12:17:29

标签: windows git gitignore git-bash msysgit

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

19 个答案:

答案 0 :(得分:1361)

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

dir_to_ignore/

更多信息here

答案 1 :(得分:190)

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

Git不会使用.gitignore.txt

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

非命令行解决方案:

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

答案 2 :(得分:92)

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

  1. .gitignore

    • .gitignore文件放入您的个人帐户的根目录中.git文件夹(在Windows中,请确保see the true file extension,然后点击.gitignore.(最后点到制作空文件扩展名))
    • 进行全局配置~/.gitignore_global并运行git config --global core.excludesfile ~/.gitignore_global以将其添加到您的git config

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

  2. 来解除跟踪
  3. 回购排除 - 对于不需要共享的本地文件,只需将文件模式或目录添加到文件.git/info/exclude即可。这些规则未提交,因此其他用户不会看到 更多信息here

  4. [更新] 要在忽略的文件列表中创建例外,请参阅this question

答案 3 :(得分:43)

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

一种解决方法是进入命令并使用“编辑”

创建一个新文件

答案 4 :(得分:41)

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

但是在Windows资源管理器中你必须为文件提供一个名称,你只是无法创建只有扩展名的文件,诀窍是创建一个空文本文件并转到命令提示符并将文件名更改为{{ 1}}

.gitignore

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

希望它能回答你的问题

答案 5 :(得分:19)

如果要维护文件夹而不是文件夹中的文件,只需将“.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

答案 6 :(得分:14)

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

答案 7 :(得分:14)

在Windows中,有一个额外的斜杠。使用

排除 .gitignore 中的单个目录
  

dir_to_exclude /

可能会有效,但用

排除所有目录
  

/

当你的目录中有空格(如my file.txt)的文件名时,

会导致问题:Git bash用反斜杠(如my\ file.txt)转义这些空格,而Git for Windows不区分{ {1}}和/

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

  

** /

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

答案 8 :(得分:9)

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

一个说明性的例子,

示例系统

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

<强>目标

  • 忽略/ dirB /
  • 的内容

顶级.gitignore(/root/.gitignore)

  • 这是您的标准gitignore信息

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

  • 此文件只读为&#39; *&#39;并完全忽略该目录,本身和所有文件!

就这么简单:)

答案 9 :(得分:7)

我在使用git来获取Windows上的.gitignore文件时遇到了一些问题。 $ GIT_DIR / info / exclude文件似乎总是有效。但是,这种方法的缺点是$ GIT_DIR目录中的文件不包含在签入中,因此不会共享。

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

答案 10 :(得分:7)

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

*
!.gitignore

它适用于我和简单。

答案 11 :(得分:7)

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

**/build/output/Debug/

答案 12 :(得分:6)

其他所有内容都失败时尝试编辑文件

  

/。GIT中/信息/排除

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

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

答案 13 :(得分:5)

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

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,我只是对这个测试用例很懒。)

答案 14 :(得分:4)

在Unix上:

touch .gitignore

在Windows上:

echo > .gitignore

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

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

更多信息:https://www.atlassian.com/git/tutorials/saving-changes/gitignore

答案 15 :(得分:3)

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

  

echo Flower_Data_Folder >> .gitignore

如果文件名为data.txt

  

echo data.txt >> .gitignore

如果其路径为“ Data / passwords.txt”

  

echo“ Data / passwords.txt” >> .gitignore。

答案 16 :(得分:1)

我有类似的问题,我在一个带有Linux人员的共享仓库的Windows工具链上工作,他们很乐意在给定文件夹中创建具有相同[除案例]名称的文件。

效果是我可以克隆回购并立即拥有数十个修改过的回购品。我签到的文件会造成破坏。

我将windows设置为区分大小写并且git不会忽略大小写但它仍然失败(显然在win32 api调用中)。

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

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

克里斯

答案 17 :(得分:0)

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

frontend/node_modules

答案 18 :(得分:0)

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

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

so cd 到 Git 仓库目录

touch .gitignore
nano .gitignore

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

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