![](/img/trans.png)
[英].gitignore to ignore all files, then recursively allows files of a certain type
[英].gitignore ignore all files then recursively allow *.foo
已經有幾個與此類似的問題,但沒有一個答案對我有用。
我想忽略我的存儲庫下文件夾中的所有內容,除了帶有 *.foo 的文件
(如果有人想知道如何證明這是合理的 - 我實際上正在為我所有的“邏輯”項目制作一個 git 存儲庫 - mac 上的音樂軟件 - 但我只想存儲實際的項目文件 *.logic)
我要把它拼出來,所以我們都在同一個盤子里。 這就是我所做的,從頭開始:
設置:
mkdir temp
cd temp
mkdir testdir
cd testdir
touch include.foo
touch dontinclude.bad
cd..
git init
touch .gitignore
將此粘貼到 .gitignore
# Ignore all
/*
# But not these files...
!.gitignore
!*.foo
狀態
唯一未跟蹤的文件是 .gitignore
如果我輸入“git add”。 - 沒有變化,只看到 .gitignore 並且我的 2 個文件被忽略。
為什么這不起作用,您如何更改上述程序以使其起作用?
這是我從中獲取 .gitignore 文件的極其相似的問題。 我正在使用 git --version 1.7.7 (也嘗試過 1.7.3) - .gitignore 忽略所有文件,然后遞歸地允許某種類型的文件
您的問題是開頭的/*
模式匹配頂級的所有文件和目錄 - 包括testdir
,因此testdir
中的所有內容都被忽略。
這就是你想要的:
# Ignore everything
*
# Don't ignore directories, so we can recurse into them
!*/
# Don't ignore .gitignore and *.foo files
!.gitignore
!*.foo
當您執行git add .
使用此配置,您應該會發現只有.gitignore
和*.foo
文件被列為要提交的更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.