簡體   English   中英

git 如何忽略某個目錄中的所有文件和子目錄,但有一些例外?

[英]How to git ignore all files and subdirectories from a certain directory except with some exceptions?

我試圖忽略位於存儲庫根目錄的.config目錄中的所有文件和子目錄,但文件.config/vimb/config和子目錄.config/ranger/除外。

這是我的.gitconfig

# Ignore the contents of .config
.config/*
 
# Avoid Blocking
!.config/
!.config/vimb
!.config/vimb/config
!.config/ranger/

結果 git 似乎忽略了整個目錄事件,使用! 通配符。

作為記錄,我還嘗試了以下方法:

# Ignore Everything
*

# Add files
!somefile1
!somefile2

# Ignore Config
.config/*
 
# Avoid Blocking 
!.config/
!.config/vimb
!.config/vimb/config
!.config/ranger/

另外,我試圖忽略所有內容並使用! 添加要暫存的每個單獨的文件和目錄。

截至目前,我使用以下來源解決了這個問題:

提前感謝您的幫助。

首先,您可以隨時檢查為什么文件仍然被忽略:

git check-ignore -v -- path/to/file

其次,您只需要忽略文件,並從忽略規則中排除文件夾,如果您希望能夠排除其中的文件:

.config/**
!.config/**/
!.config/vimb/config/**
!.config/ranger/**

這是因為:

如果排除了該文件的父目錄,則無法重新包含該文件

這是我想出的解決方案。 總而言之,我的目標是從.config目錄中排除所有文件和子目錄,除了.config/ranger目錄以及其中的所有文件和目錄以及.config/vimb/config配置文件。 以下.gitignore代碼完成了這項工作。

# Block 
.config/**

# Avoid Blocking 
!.config/
!.config/**/
!.config/vimb/config
!.config/ranger/
!.config/ranger/**
!.config/ranger/**/
!.config/ranger/init.rc

git status命令按預期輸出以下內容:

    new file:   .config/ranger/commands.py                                                                         │
    new file:   .config/ranger/rc.conf                                                                             │
    new file:   .config/vimb/config                                                                                │
    new file:   .gitignore                                                                                        

暫無
暫無

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

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