簡體   English   中英

我如何告訴 Git 忽略除子目錄之外的所有內容?

[英]How do I tell Git to ignore everything except a subdirectory?

我想忽略存儲庫中的所有文件,除了bin子目錄中出現的文件。 我嘗試將以下內容添加到我的.gitignore

*
!bin/*

然而,這並沒有達到預期的效果:我在bin/內創建了一個新文件,但是執行git status仍然顯示nothing to commit (working directory clean)

有什么建議?

這將忽略根文件和根目錄,然后取消忽略根 bin 目錄:

/*
/*/
!/bin/

這樣你就可以得到所有的 bin 目錄,包括子目錄和它們的文件。

這里如何忽略某些目錄中一個目錄“ 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

您必須排除前往目的地途中的所有內容,但必須包括目的地:

注意:這是一個排除文件(即 .gitignore),所以邏輯顛倒了。 忽略所有,除了 tsp 目錄,忽略 tsp 目錄中的所有,除了 src 目錄...

/*
!/tsp
/tsp/*
!/tsp/src
/tsp/src/*
!/tsp/src/*.h
!/tsp/src/*.cpp
!/tsp/src/data.txt
!/.gitignore

您遇到的唯一問題是bin目錄本身與bin/*模式不匹配,因此 git 甚至不在bin目錄中查找。

腦海中浮現出兩種解決方案。

.gitignore

*
!/bin/
!bin/*

或者

.gitignore

*
!/bin/

bin/.gitignore

!*

我更喜歡第二個解決方案,因為第一個解決方案不會停止忽略bin目錄中未稱為bin子目錄中的文件。 這在您的情況下可能重要也可能無關緊要。

從官方git doc ,其中一個例子說:

排除除特定目錄 foo/bar 之外的所有內容的示例(注意 /* - 沒有斜杠,通配符也將排除 foo/bar 中的所有內容):

$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar

有關前導斜線的解釋: 何時在 gitignore 中使用前導斜線

嘗試使用最新的 GIT 版本。

*
!*/
!/path/to/your/dir/**

我認為更好的方法是通過以斜線開頭的模式將每個模式錨定到頂級 git 目錄:

/*
!/public_html
!/.gitignore

它不會忽略所有文件,它只會忽略頂級文件,而不是您不想忽略的目錄中的文件。

這個.gitignore對我.gitignore

*/
/*
!bin/

試試這個不起眼的 git bug。

!bin**/**

希望能幫助到你 :)

支持文檔git bug 示例

PS:先試一下再評論。

我最近不得不這樣做:

*
!sub-dir/
!sub-dir/*

我不確定為什么我需要兩行來排除一個文件夾,但這對我和 macos 有用。

這是我的解決方案。 在我的場景中,我有一個包含子文件夾的文件夾,如下所示:

  • 數據庫(主文件夾)
    • conf(子文件夾)
    • 驅動程序(子文件夾)
    • 罐子(子文件夾)
    • sql(子文件夾)

數據庫文件夾中,我只想推送sql文件夾,因此我的.gitignore文件如下:

database/*
!database/sql/

第一行簡單地說忽略數據庫文件夾的所有子文件夾,第二行意思是因為你忽略了數據庫文件夾的所有子文件夾排除(不要忽略) sql子文件夾

聚會遲到了,但沒有一個答案對我“開箱即用”有效。 這個是:

* 
!bin
!bin/**
  • 第一行忽略一切
  • 第二行包括返回“bin”目錄本身
  • 最后一行包括“bin”目錄的全部內容,無論它是如何嵌套的(注意雙星號),

對我來說,事實證明我不應該忽略父文件夾,而是使用“/*”忽略其中的文件和文件夾

-- **/node_modules

++ * /節點模塊/

然后

++ !node_modules/@my-package/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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