我的 gitignore 有什么问题?

What is wrong with my gitignore?

我的 .gitignore 文件有什么问题?

build/
/build
/*/build/
/*/*/build/
build/

这是我的目录结构:

myroot
    FacebookSDK
       +--src
       +--build
           +--foo
           +-- bar  
    app
       +--scr
       +--build         
    build
        +--other stuff...
        +--other stuff..
    .gitignore
    other stuff...

问题是foobar没有被忽略!

可能出了什么问题?

xxxxs-my:xxxx xxx$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified:   FacebookSDK/FacebookSDK.iml
modified:   FacebookSDK/build.gradle
modified:   FacebookSDK/build/intermediates/bundles/debug/classes.jar
modified:       FacebookSDK/build/intermediates/bundles/debug/res/drawable/com_facebook_button_blue.xml

我相信这是因为您忽略的三行来自根目录:

/build
/*/build/
/*/*/build/

它们何时应该来自当前目录:

./build
./*/build/
./*/*/build/

尝试使用

build/
**/build/

在 .gitignore

如果文件已被跟踪,请使用 git rm --cached myfile 将它们从版本控制中删除,但将它们保留在本地仓库中。一旦从版本控制中删除,它们就不会在更改时被检测到。

你应该只需要这条规则,per the documentation:

**/build

这将在全局范围内排除 build 个文件夹。

如果之前添加了这些文件夹中的任何一个,您必须通过 git rm 从 Git 中删除它。

你的.gitignore实际上有什么问题:

  • /buildbuild/是等价的;它们将匹配顶级 build/ 文件夹。
  • /*/build/*/*/build 不匹配任何内容。