代码之家  ›  专栏  ›  技术社区  ›  danjarvis

Git-基于模式忽略文件

git
  •  10
  • danjarvis  · 技术社区  · 15 年前

    我想忽略没有扩展名的可执行文件

    例如:

    gcc -o foo foo.c
    

    我知道我可以将“foo”添加到我的.gitignore文件中,但是如果我决定更改可执行文件的名称,我需要更新我的.gitignore文件…

    2 回复  |  直到 12 年前
        1
  •  8
  •   Cascabel    15 年前

    也许手动维护gitignore是最好的选择。你可以这样做:

    *
    !*.*
    

    要排除所有内容,请使用“.”包含所有内容,但我怀疑您的目录没有扩展名。当然,当前跟踪的目录仍然会被跟踪,但是如果您添加了一个新目录, git-status 看不到,你得用 add -f 把它弄进去。

    不管怎样,假设所有无扩展名的文件都不应该被跟踪可能是不好的。您可能会自然而然地得到一些结果——例如,自述和安装非常常见。不小心忽略一个文件比修改gitignore更糟糕。修改GitIgnore可能需要几秒钟,但当您需要时,它将是显而易见的。如果您不小心忽略了一个文件,那么很容易就无法将其签入并丢失工作。

        2
  •  9
  •   Per Lundberg Kartik Soneji    12 年前

    我通常使用makefile-hacks来处理这个问题。在我的makefile中,我有可执行文件的名称$(name),然后我这样做:

    #first rule
    all: gitignoreadd ... more depends
        ... some commands ...
    
    gitignoreadd:
        grep -v "$(name)" .gitignore > temp
        echo $(name) >> temp
        mv temp .gitignore
    
    gitignoreremove:
        grep -v "$(name)" .gitignore > temp
        mv temp .gitignore
    

    这条规则可能只是对某个合适的地方的依赖。然后你通常会有一个“干净”的规则,如下所示:

    clean: gitignoreremove
       rm *.o *.othergarbagefiles $(name)
    

    这样就可以了。这是一个黑客,但对我有用。唯一的问题是,您必须在更改名称之前运行make clean以自动清除所有内容。