我想忽略我的存储库中的所有文件,除了bin
子目录中出现的文件.我尝试将以下内容添加到我的.gitignore
:
*
!bin/*
Run Code Online (Sandbox Code Playgroud)
然而,这并没有产生预期的效果:我在里面创建了一个新文件bin/
,但git status
仍在显示nothing to commit (working directory clean)
.
有什么建议?
Tyl*_*ing 262
这将忽略根文件和根目录,然后取消忽略根bin目录:
/*
/*/
!/bin/
Run Code Online (Sandbox Code Playgroud)
这样您就可以获得所有bin目录,包括子目录及其文件.
And*_*nko 103
这里如何忽略一些目录中的一个目录" MY_SUPER_DUPER_TEMPLATE_directory "
结构:/ bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory
/*
!/bitrix
/bitrix/*
!/bitrix/templates
/bitrix/templates/*
!/bitrix/templates/MY_SUPER_DUPER_TEMPLATE_directory
*.DS_Store
*.gitignore
Run Code Online (Sandbox Code Playgroud)
nik*_*ikc 58
您必须在前往目的地的途中排除所有内容,但必须包含目的地:
注意:这是一个排除文件(即.gitignore),因此逻辑被反转.忽略所有,除了tsp目录,忽略tsp目录中的所有内容,除了src目录...
/*
!/tsp
/tsp/*
!/tsp/src
/tsp/src/*
!/tsp/src/*.h
!/tsp/src/*.cpp
!/tsp/src/data.txt
!/.gitignore
Run Code Online (Sandbox Code Playgroud)
CB *_*ley 39
您遇到的唯一问题是bin
目录本身与bin/*
模式不匹配,因此git甚至不在bin
目录中.
有两种解决方案可供您考虑.
.gitignore
:
*
!/bin/
!bin/*
Run Code Online (Sandbox Code Playgroud)
要么
.gitignore
:
*
!/bin/
Run Code Online (Sandbox Code Playgroud)
bin/.gitignore
:
!*
Run Code Online (Sandbox Code Playgroud)
我更喜欢第二种解决方案,因为第一种解决方案不会停止忽略bin
目录中未调用的子目录中的文件bin
.在您的情况下,这可能或不重要.
sol*_*333 18
从官方的git doc中,其中一个例子说:
示例排除除特定目录foo/bar之外的所有内容(注意/* - 没有斜杠,通配符也会排除foo/bar中的所有内容):
$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
Run Code Online (Sandbox Code Playgroud)
有关前导斜杠的说明:何时在gitignore中使用前导斜杠.
Jak*_*ake 11
我认为更好的方法是通过使用斜杠启动模式将每个模式锚定到顶级git目录:
/*
!/public_html
!/.gitignore
Run Code Online (Sandbox Code Playgroud)
它不会忽略所有文件,而只会忽略顶级文件,而不是您不想忽略的目录中的文件.
聚会迟到了,但没有一个答案对我来说“开箱即用”。这个的作用是:
*
!bin
!bin/**
Run Code Online (Sandbox Code Playgroud)
尝试这个不起眼的git bug.
!bin**/**
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你 :)
支持docs git bug示例
PS:在评论之前先试一试.
归档时间: |
|
查看次数: |
83732 次 |
最近记录: |