簡體   English   中英

.gitignore 忽略所有文件然后遞歸允許 *.foo

[英].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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM