我正在使用Windows 7 与Git v2.8.3.
我有一个包含存储库的目录结构Git。
testing_gitignore\n\xe2\x94\x82 .gitignore\n\xe2\x94\x82 file_1.txt\n\xe2\x94\x82 file_2.txt\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80dir_1\n\xe2\x94\x82 file_11.txt\n\xe2\x94\x82 file_12.txt\n\xe2\x94\x82 file_13.txt\n\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80dir_2\n \xe2\x94\x82 file_21.txt\n \xe2\x94\x82 file_22.txt\n \xe2\x94\x82 file_23.xlsx\n \xe2\x94\x82 file_24.txt\n \xe2\x94\x82\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80dir_21\n file_211.txt\n file_212.xlsx\n file_213.txt\nRun Code Online (Sandbox Code Playgroud)\n\n我想配置该.gitignore文件,以便dir_2递归地忽略内部的所有文件,但保留(用于提交)扩展名的文件:.xlsx。
在里面.gitignore我使用了以下内容:
/dir_2/*\n/dir_2/**/*\n!/dir_2/*.xlsx\n!/dir_2/**/*.xlsx\nRun Code Online (Sandbox Code Playgroud)\n\n但我没有成功,因为我将文件作为文件添加到commit以下列表(您也可以在此处看到):
.gitignore\nfile_1.txt\nfile_2.txt\ndir_1\\file_11.txt\ndir_1\\file_12.txt\ndir_1\\file_13.txt\ndir_2\\file_23.xlsx\nRun Code Online (Sandbox Code Playgroud)\n\n但我希望它应该包含在文件中(作为要提交的文件):
\n\ndir_2/dir_21/file_212.xlsx\nRun Code Online (Sandbox Code Playgroud)\n\n您能给我一个.gitignore配置来实现此目的吗?\n(在此处发布之前,您可以使用我之前在链接上附加的下载目录结构自行尝试一下吗?)
尝试忽略文件但重新包含文件夹:
/dir_2/**/*
!/dir_2/**/
Run Code Online (Sandbox Code Playgroud)
(请注意第一条规则:它递归地忽略所有文件和文件夹,然后在第二条规则中/**/*重新包含文件夹)。!/**/
然后您可以重新包含文件(因为它们的文件夹不会被忽略)
!/dir_2/**/*.xlsx
Run Code Online (Sandbox Code Playgroud)
主要规则.gitignore仍然是:
因此,忽略文件和文件夹(带有“ /**/*”)意味着您将无法重新包含文件,除非它们的父文件夹本身被重新包含(带有!/**/:尾部斜杠表示“文件夹”)。
满的.gitignore:
/dir_2/**/*
!/dir_2/**/
!/dir_2/**/*.xlsx
Run Code Online (Sandbox Code Playgroud)
请注意,您不必提交 a.gitignore来测试其效果:修改它,然后执行 a git status:只要那些未跟踪的文件(git rm -r --cached dir_2首先执行 a ),这些规则的效果将立即生效。
完成后.gitignore,执行 agit add .和 a git status:它应该只在添加时显示*.xlsx在下面。dir_2/
[注意下划线]
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |