代码之家  ›  专栏  ›  技术社区  ›  Ben Hymers

忽略git项目上的任何“bin”目录

  •  1063
  • Ben Hymers  · 技术社区  · 15 年前

    .git/
    .gitignore
    main/
      ...
    tools/
      ...
    ...
    

    在main和tools以及任何级别的任何其他目录中,都可能有一个“bin”目录,我想忽略它(我也想忽略它下面的所有内容)。我在.gitignore中尝试了这些模式,但都不起作用:

    /**/bin/**/*
    /./**/bin/**/*
    ./**/bin/**/*
    **/bin/**/*
    */bin/**/*
    bin/**/*
    /**/bin/* #and the others with just * at the end too
    

    /main/**/bin/**/*
    

    但我不希望每个顶级目录都有一个条目,也不希望每次添加新目录时都要修改.gitignore。

    这是在Windows上使用最新的msysgit。

    还有一件事,有些文件和目录的名称中包含子字符串“bin”,我不希望忽略它们:)

    14 回复  |  直到 7 年前
        1
  •  1985
  •   altocumulus    6 年前

    在版本1.8.2之前, ** .gitignore . 从1.8.2开始,git支持 ** 表示零个或多个子目录(请参阅 release notes

    忽略目录树中当前级别下任何位置称为bin的所有目录的方法是使用 .gitignore 使用以下模式创建文件:

    bin/
    

    man 页面中,有一个忽略名为 foo 使用类似的模式。

    如果您的git索引中已经有任何您不想再跟踪的bin文件夹,那么您需要显式删除它们。Git不会因为已经被跟踪的路径与新路径匹配而停止跟踪这些路径 .gitignore rm )仅从索引( --缓存 )递归地( ).根bin文件夹的命令行示例:

    git rm -r --cached bin
    
        2
  •  497
  •   Bombe    15 年前

    这个 .gitignore

    bin/
    

    在顶层。

        3
  •  270
  •   plancys    9 年前

    我认为值得一提的是git初学者:

    吉特 如果以后添加规则,则不会忽略该文件 . 在这种情况下,你 终端:

    git rm --cached

    git rm --cached -r .
    git add .
    

    它基本上会“刷新”您的本地回购协议,并取消搁置被忽略的文件。

    见:

    http://git-scm.com/docs/git-rm ,

    https://help.github.com/articles/ignoring-files/

        4
  •  75
  •   Community Romance    4 年前

    这个 ** 以前从未正常工作过,但从那时起 git 1.8.2 (March, 8th 2013) ,似乎得到了明确的提及和支持:

    中的模式 .gitignore .gitattributes 文件夹 可以 **/ ,作为与0或多个子目录级别匹配的模式 .

    例如。” foo/**/bar “匹配项” bar “在” foo “自身或在的子目录中” ".

    在您的情况下,这意味着现在可能支持这一行:

    /main/**/bin/
    
        5
  •  49
  •   wisbucky Ishan    11 年前
    [Bb]in/
    

    匹配大小写

        6
  •  37
  •   Cory    15 年前

    我没有看到这里提到的,但这似乎是区分大小写的。一旦我更改为/Bin,这些文件就会按预期被忽略。

        7
  •  28
  •   Shadi Alnamrouti    4 年前

    步骤1:将以下内容添加到文件.gitignore。

    # User-specific files
    *.suo
    *.user
    *.userosscache
    *.sln.docstates
    
    # Build results
    [Dd]ebug/
    [Dd]ebugPublic/
    [Rr]elease/
    [Rr]eleases/
    x64/
    x86/
    bld/
    [Bb]in/
    [Oo]bj/
    
    # Visual Studio 2015 cache/options directory
    .vs/

    如果问题仍然存在,那是因为 .gitignore 未跟踪 .gitignore 这是无效的。 要完全解决此问题,您需要打开 Git Bash 包管理器控制台 (请参见下面的屏幕截图)在存储库根文件夹中运行以下命令。

    git rm -r --cached .
    git add .
    git commit -m "Update .gitignore"

    PM console 那么这个问题就完全解决了。

        8
  •  26
  •   Jaider    10 年前

    [Bb]in 将解决问题,但是。。。 这里是一个更广泛的您应该忽略的事项列表(GitExtension的示例列表):

    #ignore thumbnails created by windows
    Thumbs.db
    #Ignore files build by Visual Studio
    *.user
    *.aps
    *.pch
    *.vspscc
    *_i.c
    *_p.c
    *.ncb
    *.suo
    *.bak
    *.cache
    *.ilk
    *.log
    [Bb]in
    [Dd]ebug*/
    *.sbr
    obj/
    [Rr]elease*/
    _ReSharper*/
    
        9
  •  19
  •   Jochen van Wylick    9 年前

    如果你正在寻找一个伟大的全球 .gitignore 适用于任何Visual Studio(.NET)解决方案的文件-我建议您使用此解决方案: https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

    好吧,这是最全面的 .gitignore 对于.NET项目。

        10
  •  12
  •   AnthonyC    6 年前

    从字面上看,没有一个答案对我有效;唯一适合我的是(在Linux上):

    **/bin
    (yes without the / in the end)
    
    git version 2.18.0 
    
        11
  •  5
  •   Kerem    9 年前

    作为通知;

    .gitignore 在某种程度上不起作用(如此添加 foo/* git status

    git checkout -- foo/*

        12
  •  4
  •   Nikhil Karanjkar    7 年前

    对于2.13.3及更高版本,在.gitignore文件中只写入bin应忽略bin及其所有子目录和文件

    箱子

        13
  •  2
  •   Dhwaneel    7 年前

    将**/bin/添加到.gitignore文件中对我起了作用(注意:bin文件夹未添加到索引中)。

        14
  •  1
  •   prosti    5 年前

    如果里面的图案 .gitignore 以斜线结束 / ,它将只找到与目录匹配的项。

    换句话说,, bin/ 将匹配一个目录 bin 和它下面的路径,但与常规文件或符号链接不匹配 箱子 .


    如果模式 不包含斜杠 ,就像 箱子 /bin .

    这不是解决这个问题的最好办法。

        15
  •  0
  •   Jacek Plesnar    4 年前

    在我的例子中,gitignore文件的编码有问题,请检查它是否为UTF-8

        16
  •  0
  •   Norman    4 年前

    我试图删除多个名为的文件夹(在子文件夹中) et-cache (从Wordpress缓存文件夹) 主题)从索引和被跟踪。

    我补充说

    et-cache/
    

    .gitignore 文件但是

    git rm -r --cached et-cache
    

    导致错误:

    因此,解决方案是使用powershell:

    Get-ChildItem et-cache -Recurse |% {git rm -r --cached $_.FullName}
    

    这将搜索所有名为et cache的子文件夹。然后使用每个文件夹路径(全名)将其从git中的跟踪中删除。