git-忽略指定文件

git-忽略指定文件

       有些 件是 们并 不想 加入也无需被添加到 Git 管理中,同时也不希望他出现在未跟踪列表中。例如在编译过程中生成的 o 文件。 “.gitignore” 文件 达到这 个效果。
一、局部和全局 设置
       .gitignore 有全局和局部两种:
1. 全局
       通过修改全局配置 git config 中的  excludesfile 指定全局忽略文件。 设置方法:

$ git config --global core.excludesfile ~/.gitign ore

       修改 ~/.gitignore 这个文件将作用于所有 git 项目,并且作用于项目实例中的所有被跟踪的目录。比如说我们可以在该文件中添加 *.o 来忽略所有 .o 文件。

2. 局部
       忽 文件默认为当前目录的 .gitignore ,但它只作用于当前目录下。上面说到,在全局的 .gitignore 文件中添加 *.o 会忽略所有目录下产生的 .o 文件,但在当前目录下的 .gitignore 中添加 *.o 却只能忽略当前目录下的 .o 

二、语法
       .gitignore 的语法规范如下:

       ·所有空行或者以注释符号 # 开头的行都会被 Git 忽略;
       ·可以使用 标准的  glob 模式 匹配。 * 匹配模式最后跟反斜杠( / )说明要忽略的是目录。 * 要忽略指定模式以外的文件 或目录 可以 在模式前 加上 叹号( ! )取 反。
     
       glob 模式匹配:
       ·星号( * )匹配零个或多个任意字符;
    ·[abc]  匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
       ·问号( ? )只匹配一个任意字符;
       · [0-9a-zA-Z]  在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如  [0-9a-zA-Z]  表示匹配所有 0 到 9 的数字和所有字母);
       ·\ 转义字符。

       注:理论上来说,在要忽略的格式文件后面添加注释是允许的,但经过我的验证,结果发现这样子操作并不能达到预期的效果。

三、例子
       一个 .gitignore  例子。
    # 此为注释 – 将被 Git 忽略 
    
    # 忽略所有 .a 结尾的文件
     
    *.a  
    
    # 但 lib.a 除外 
    
    !lib.a
    
    # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO  
    
    /TODO
    
     # 忽略 build/ 目录下的所有文件
    
     build/
    
     # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt 
    
     doc/*.txt




网址:http://blog.sina.com.cn/s/blog_601f224a01012a9r.html
转载注明原文出处,如上
<think>嗯,用户想知道如何让Git忽略特定格式的文件。我记得.gitignore文件是用来指定哪些文件或目录需要被Git跟踪的。首先,我需要确认用户是否了解.gitignore的基本用法,但根据问题内容,他们可能已经知道一些,但需要具体指导如何按文件格式忽略。 首先,用户可能需要在项目根目录下创建或编辑.gitignore文件。然后,在里面添加规则来匹配特定的文件格式。比如,忽略所有的.log文件或者.tmp文件。可能需要解释通配符的使用,比如*.log会忽略所有以.log结尾的文件。 接下来,可能需要更复杂的模式,比如忽略某个目录下的特定文件类型。例如,忽略build目录下的所有.o文件,可以写成build/*.o。或者使用双星号来匹配任意子目录,比如**/*.bak会忽略所有子目录中的.bak文件。 另外,用户可能有一些例外情况,比如虽然忽略了所有的.txt文件,但想保留某个特定的important.txt。这时候需要在.gitignore中使用!important.txt来排除这个文件。但要注意顺序,因为后面的规则可能会覆盖前面的。 还需要提醒用户,已经跟踪过的文件即使被添加到.gitignore,Git还是会继续跟踪。这时候需要使用git rm --cached命令来从索引中移除,但保留本地文件。这点很重要,用户可能会遇到这个问题,所以需要特别说明。 可能还需要提到.gitignore的匹配规则,比如以斜杠/开头表示只匹配当前目录,否则会递归匹配所有子目录。还有注释以#开头,帮助用户组织规则。 另外,用户可能知道.gitignore文件的位置,除了项目根目录,还可以在.git/info/exclude中设置本地忽略规则,或者在全局配置中设置全局忽略文件过通常项目级的忽略使用项目根目录的.gitignore。 最后,可能需要给出一个示例,让用户更清楚如何编写规则。例如,忽略临时文件、日志文件、编译产物等常见情况。同时,提醒用户测试规则是否生效,可以使用git status来检查文件是否被忽略。 还要注意引用中的内容,用户提供的引用里提到了路径使用相对路径,能直接链接到项目目录外,这可能与.gitignore中的路径写法有关,需要确保规则中的路径是相对于项目目录的。比如引用[3]提到使用paths指令,虽然这里GitLab Runner的配置,但路径的相对性类似。 总结步骤应该是:创建.gitignore文件,编写规则,处理已跟踪文件的例外,测试效果。可能还需要提到一些常见错误,比如规则写错了格式,或者顺序问题导致例外无效。确保用户了解每个步骤的作用,避免常见的陷阱。</think>### 如何通过.gitignore规则让Git忽略特定格式文件? #### 步骤说明 1. **创建或编辑.gitignore文件** 在项目根目录下创建`.gitignore`文件(若存在),或编辑已有文件。该文件用于定义Git忽略的规则。 2. **编写忽略规则** - **基本格式匹配** 使用通配符`*`匹配任意字符,例如: ```plaintext # 忽略所有.log文件 *.log # 忽略所有临时文件 *.tmp ``` - **目录特定文件** 若需忽略特定目录下的文件格式,可指定路径: ```plaintext # 忽略build目录下所有.o文件 build/*.o # 忽略所有子目录中的.bak文件 **/*.bak ``` - **排除例外** 使用`!`可保留某些例外文件: ```plaintext # 忽略所有.txt文件,但保留important.txt *.txt !important.txt ``` 3. **处理已跟踪的文件** 若文件已被Git跟踪,需手动从索引中移除(保留本地文件): ```bash git rm --cached <文件名> ``` 4. **验证规则生效** 运行`git status`确认目标文件再显示为未跟踪或修改状态。 #### 示例 ```plaintext # .gitignore示例 # 忽略所有二进制文件 *.exe *.dll # 忽略日志和临时文件 *.log tmp/ # 保留特定日志文件 !debug.log ``` #### 注意事项 - 路径规则需**相对项目根目录**,例如`docs/*.pdf`会忽略`docs`目录下的PDF文件,而非全局PDF文件[^3]。 - 已提交文件需通过`git rm --cached`解除跟踪,否则`.gitignore`会生效[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值