Git-忽略规则(.gitignore配置)不生效原因和解决(转载记录)

第一种方法:

.gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。

原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,

这时候我们就应该先把本地缓存删除,然后再进行git的提交,这样就不会出现忽略的文件了。

解决方法: git清除本地缓存(改变成未track状态),然后再提交:- 我直接重新来了。搞定

[root@kevin ~]# git rm -r --cached .
[root@kevin ~]# git add .
[root@kevin ~]# git commit -m ‘update .gitignore’
[root@kevin ~]# git push -u origin master

需要特别注意的是:

1).gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

2)想要.gitignore起作用,必须要在这些文件不在暂存区中才可以,.gitignore文件只是忽略没有被staged(cached)文件,

对于已经被staged文件,加入ignore文件时一定要先从staged移除,才可以忽略。

第二种方法:(推荐)

在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。

[root@kevin ~]# git update-index --assume-unchanged PATH //在PATH处输入要忽略的文件

在使用.gitignore文件后如何删除远程仓库中以前上传的此类文件而保留本地文件
在使用git和github的时候,之前没有写.gitignore文件,就上传了一些没有必要的文件,在添加了.gitignore文件后,就想删除远程仓库中的文件却想保存本地的文件。这时候不可以直接使用"git rm directory",这样会删除本地仓库的文件。可以使用"git rm -r –cached directory"来删除缓冲,然后进行"commit"和"push",这样会发现远程仓库中的不必要文件就被删除了,以后可以直接使用"git add -A"来添加修改的内容,上传的文件就会受到.gitignore文件的内容约束。
额外说明:git库所在的文件夹中的文件大致有4种状态
Untracked:
未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

Unmodify:
文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改,
而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

Modified:
文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态,
使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改

Staged:
暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态.
执行git reset HEAD filename取消暂存, 文件状态为Modified

Git 状态 untracked 和 not staged的区别
1)untrack 表示是新文件,没有被add过,是为跟踪的意思。
2)not staged 表示add过的文件,即跟踪文件,再次修改没有add,就是没有暂存的意思

<think>好的,用户想要配置Git的全局忽略文件,也就是设置core.excludesfile。我之前在文档里看到过相关的引用,得仔细回忆一下步骤。 首先,用户需要创建一个全局的.gitignore文件,比如在用户的主目录下命名为.gitignore_global。这个文件里可以添加需要忽略的通用规则,比如IDE生成的文件或者日志文件。 接下来,用户需要通过Git命令来配置全局忽略文件。根据引用[3],命令应该是git config --global core.excludesfile ~/.gitignore_global。这样设置之后,所有本地的Git仓库都会应用这个全局忽略规则,而不需要每个项目单独配置。 不过要注意,全局配置只对本地有效,其他开发者在克隆仓库后不会自动继承这个配置,可能会导致他们那边的不一致。所以如果有些忽略规则是项目必需的,还是应该在项目内的.gitignore文件中添加,如引用[5]提到的。 另外,引用[4]提到还可以直接编辑~/.gitconfig文件,在[core]部分添加excludesfile = ~/.gitignore_global。这可能更适合习惯手动编辑配置文件的用户。 需要确保用户理解全局本地忽略文件的区别,避免出现忽略文件失效的问题,比如引用[3]中提到的忽略规则冲突的情况。可能用户还需要检查现有的.gitignore文件是否有冲突的规则,导致全局配置不生效。 总结步骤应该是:创建全局忽略文件,配置Git指向该文件,并测试是否生效。同时提醒用户注意事项,比如全局配置的局限性与其他开发者的协作问题。</think>### 如何设置 Git 全局忽略文件 `core.excludesfile`? #### 配置步骤: 1. **创建全局忽略文件** 在用户主目录下创建 `.gitignore_global` 文件(文件名可自定义): ```bash touch ~/.gitignore_global ``` 编辑该文件,添加需要全局忽略的文件或目录规则,例如: ``` *.log .DS_Store node_modules/ ``` 2. **配置 Git 全局忽略路径** 执行以下命令,将全局忽略文件路径关联到 Git 配置: ```bash git config --global core.excludesfile ~/.gitignore_global ``` 此命令会修改 `~/.gitconfig` 文件,添加如下内容: ```ini [core] excludesfile = ~/.gitignore_global ``` [^3][^4] 3. **验证配置** 检查全局配置是否生效: ```bash git config --global core.excludesfile ``` 若输出 `~/.gitignore_global`,则表示配置成功。 --- #### 注意事项: - **全局配置仅对本地生效** 全局忽略规则不会同步到远程仓库,其他开发者需自行配置[^3]。 - **优先级问题** 若项目内存在 `.gitignore` 文件,其规则会与全局规则合并生效,但项目级规则优先级更高[^5]。 - **避免提交敏感文件** 即使配置了全局忽略,仍需注意不要在项目级 `.gitignore` 中添加临时性忽略规则(如密码文件),建议使用本地规则或 `.git/info/exclude`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫邪博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值