Git设置忽略排除和重新添加已经被忽略过文件(夹)的方法

场景描述

在使用git的时候,项目开始我们设置了一些需要忽略的文件和文件夹,比如一些工程文件和项目依赖库,以免多个开发者本地环境不一样和工程文件过大的问题。但后期发现那些已经被我们忽略掉的文件需要重新添加或者忽略的文件夹里面有某个文件(夹)是需要大家一致的,需要设置一下排除,下面我们针对这两种场景讲一下解决办法

设置忽略排除

设置忽略我们通常是在.gitignore文件中设置,比如在laravel框架中我们设置忽略整个vendor文件夹,则在.gitignore中添加如下路径

/vendor/*

路径中的星号表示所有,如果需要这是后续的排除,这里的星号很重要

接下来我们设置忽略的文件夹中有一个文件夹里面的内容不需要忽略

!/vendor/laravel/framework/src/Illuminate/Auth/

!表示排除的意思,当然如果忽略某个文件就直接指定就行了,比如

!/vendor/laravel/framework/src/Illuminate/Auth/TokenGuard.php

好,设置忽略和设置忽略排除,这里就基本行了

重新添加已经被忽略过的文件(夹)

重新添加已经被忽略过的文件时,我们仅仅使用git add是不行的,因为git仓库中根本没有那个文件,这时候我们需要加上-f参数来强制添加到仓库中,然后在提交。比如上面设置了忽略排除的文件TokenGuard.php我们需要重新加入

git add -f /vendor/laravel/framework/src/Illuminate/Auth/TokenGuard.php

然后在commit和push就行了

忽略已经提交过的文件

这里说点题外话,有的时候我们需要忽略掉以前提交过的文件,因为git已经索引了该文件所以我们先要删除掉该文件的缓存,如文件User.php已经提交过了,现在我们想忽略,这是我们先在.gitignore中设置该文件为忽略,然后我们执行如下命令删除缓存

git rm --cached User.php

若是文件夹

git rm -r --cached folder/

然后我们在commit和push就好了

忽略目录中文件,保留目录结构

项目有的时候为了代码目录的完整性,需要保留目录本身,目录里面的文件都忽略。比如涉及用户上传相关的文件需要忽略,而上传目录有的时候因为权限的问题无法自动创建,所以需要保留目录本身。

我们只需要在需要保留的目录中添加一个.gitignore文件,内容如下

# ignore all except .gitignore file
*
!.gitignore

当然第一行是一个注释,可以去掉。如果先前目录是被忽略的,则需要用git add -f来强制添加在提交

还有一种情况是目录里面的文件不是忽略的,只是由于git无法提交空目录,所以可以在空目录中添加一个文件占位符,我们一般叫做.gitkeep文件,里面内容是空的,这样目录就可以提交了

### 如何在 Git 中配置 `.gitignore` 文件忽略特定文件 #### 创建编辑 `.gitignore` 文件 为了使 Git 忽略某些不需要追踪的文件,在项目根目录下创建名为`.gitignore` 的文件。此文件可以手动建立,也可以通过命令行工具生成。 对于已存在的仓库,可以直接打开该文件进行编辑;如果是新初始化的仓库,则需先创建这个文件: ```bash touch .gitignore ``` #### 编写忽略规则 向 `.gitignore` 文件内输入想要排除在外的具体路径模式。每条规则占据一行,支持通配符匹配方式简化书写过程[^1]。 - 单个文件名表示精确匹配; - 使用星号 `*` 可代表任意数量字符; - 斜杠 `/` 前缀用于限定仅作用于当前目录下的子项而非所有层级; - 加上感叹号 `!` 则反转意义,即强制包含某类文件。 例如,要忽略所有的 `.log` 日志文件以及某个指定名称的日志记录文件 `debug.log` ,可以在 `.gitignore` 文件中加入如下两行内容: ``` *.log /debug.log ``` #### 应用新的忽略规则 当更新了 `.gitignore` 后,其定义的新规便会即时影响尚未被索引(未执行过 `git add` 或者从未提交过的)资源。然而,假如之前已经把目标对象加入了历史记录里边,那么即便现在设定了对应的过滤条件也无法自动移除它们的历史踪迹[^2]。 针对这种情况,有两种处理办法: - 手动删除缓存区内对应实体再重新添加整个工程结构(`git rm --cached`)。 - 运行清理脚本批量清除受控状态列表里的废弃链接。 #### 验证效果 最后可以通过运行下面这条指令查看哪些文件处于未跟踪的状态从而验证设置是否成功: ```bash git status ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值