我想要做的是列出文件夾中的所有gitignore
規則。假設以下文件夾結構:GIT:如何列出文件夾中的所有gitignore規則
project/
project/folderA/
現在,如果我想要一些gitignore
規則,我的整個項目,我把它放在project/.gitignore
,但我也可以添加一些規則來project/folderA/.gitignore
,這是我的理解,將適用至project/folderA
及其子文件夾。
現在假設我有兩個.gitignore
文件的一些規則,我在project/folderA
,我怎麼能列出了適用於這裏所有gitignore
規則?我需要查看從父文件夾繼承的所有聯合以及當前文件夾中存在的聯合。
您可以使用下面的命令:
git check-ignore *
這將直接列出你這是忽略了當前文件夾下的一切,如果你增加一個-v
選項,它也將告訴你這已經引起了規則它被忽略。
我需要的不是給出一個例子,看看它是否被忽略,我只需要看到適用於當前文件夾的所有規則。
編輯:一些建議,.gitignore
文件中的子文件夾中覆蓋父,只有該文件需要進行檢查。我已經用git版本2.13.3
進行了測試,這不是它的工作原理。如果我在父文件夾中有patternA
,即使在子文件夾的.gitignore
文件中沒有相同的模式,它也會在子文件夾中被忽略。
編輯2:考慮以下工作例如:
[[email protected] tmp]$ mkdir test
[[email protected] tmp]$ cd test/
[[email protected] test]$ git init
Initialized empty Git repository in /tmp/test/.git/
[[email protected] test]$ echo "a">.gitignore
[[email protected] test]$ mkdir p
[[email protected] test]$ cd p
[[email protected] p]$ echo "b">.gitignore
[[email protected] p]$ echo "c">.gitignore
[[email protected] p]$ touch a
[[email protected] p]$ touch b
[[email protected] p]$ cd ..
[[email protected] test]$ touch a
[[email protected] test]$ touch b
[[email protected] test]$ git add .
[[email protected] test]$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .gitignore
new file: b
new file: p/.gitignore
[[email protected] test]$ cd p
[[email protected] p]$ git list-git-ignore-rules-applied-here <-- hypothetical
正如你可以看到,在父文件夾的唯一規則是a
,並且在p
文件夾中的兩個規則是a
和b
,因此在git add .
之後跟蹤那些創建的文件。現在的這個例子代碼的最後一行是我需要的,這應該給我的輸出:
a
b
c
你的意思是你想要明確適用於該文件夾的規則,或者*可以*應用於該文件夾,假設你在其中放置了一個匹配文件(即不關心文件夾的規則)? –
你爲什麼需要這個?你想在這裏解決哪個問題? –
我克隆了一個repo,而不是我想添加一個文件夾中的一堆數據。我需要知道在我的'gitignore'規則中是否有任何模式相似'data',我可以使用並命名我的數據文件夾。如果我不需要,我也不想更改任何'.gitignore'文件。 – adrin