首页 > 其他分享 >git配置了 .gitignore 文件,但是不生效

git配置了 .gitignore 文件,但是不生效

时间:2024-05-15 14:44:22浏览次数:23  
标签:文件 git staged 忽略 add 生效 gitignore

方法一

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

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

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

解决方法: git清除本地缓存(改变成未track状态),然后再次提交。
[root@VM-0-17-centos ~]# git rm -r --cached .
[root@VM-0-17-centos ~]# git add .
[root@VM-0-17-centos ~]# git commit -m 'update .gitignore file'
[root@VM-0-17-centos ~]# git push

需要注意的是:
1.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
2.想要.gitignore起作用,必须要在这些文件不在暂存区中才可以,.gitignore文件只是忽略没有被staged(cached)文件,对于已经被staged文件,加入ignore文件时一定要先从staged移除,才可以忽略。

方法二:

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

[root@VM-0-17-centos ~]# 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,就是没有暂存的意思

标签:文件,git,staged,忽略,add,生效,gitignore
From: https://www.cnblogs.com/liubaojing/p/18193817

相关文章

  • nginx容器卷映射文件不生效
    问题:启动如下,当修改/data/nginx/conf/nginx.conf文件内容,执行dockerexec容器idnginx-sreload,登录容器里面查看是无法生效的,必须要重启容器才行dockerrun-d-p13700:13700\-v/data/www:/usr/local/nginx/html\-v/data/nginx/conf/nginx.conf:/usr/local/nginx/con......
  • git仓库ssh连接
    1、创建ssh秘钥:1)设置git账户:gitconfig--globaluser.email"[email protected]"gitconfig--globaluser.name"zhouyehong"2)创建ssh公钥:ssh-keygen-trsa-C'[email protected]'2、添加到个人git账户:1)cat~/.ssh/id_r......
  • 使用Git命令从本地上传到码云
    Gitee创建仓库内没有内容本地:初始化Git仓库:gitinit提交文件到暂存区:gitadd.//.表示提交所有文件提交文件到工作区:gitcommit-m"此次提交的描述,简介明了的描述"关联码云仓库:gitremoteaddoriginhttps://gitee.com/xxxx/xxxxx.git推送到远程仓库:gitpush-uorigin......
  • GitLab 管理 NuGet 包
    1概览在服务器上构建项目时,需要引用nuget.org之外的包,如公司内部开发的、第三方未发布到nuget.org上的。怎么办?GitLab提供了PackageRegistry来解决这个问题。2上传NuGet包到指定项目中新建或使用一个已有项目,作为存放NuGet包的项目,为其他需要引用对应NuGet......
  • Gitee千Star优质项目解析: ng-form-element低开引擎解析
    好家伙,在写项目的时候,我发现自己的平台的组件写的实在是太难看了,于是想去gitee上偷点东西,于是我们本期的受害者出现了gitee项目地址https://gitee.com/jjxliu306/ng-form-elementplus-sample.git组件库以及引擎完全开源,非常牛逼的项目,非常牛逼的作者 项目名:ng-form-......
  • Windows下git配合Unity要设置autocrlf=false
    Unity的.asset文件的换行符一定是Unix(LF)格式的,哪怕在设置里选了用Windows(CRLF)也没用。这个选项貌似只对创建的C#Script有效。这些Unix换行文件提交上去没问题,但如果你想revert或者checkout,就会变成Windows换行,然后如果在Unity里面修改了,哪怕最后实际数值没有变化,也会给你......
  • git 查看当前代码是在哪个 tag 上
    在Git中,查看当前代码所在的tag可以使用以下命令:###查看当前提交所对应的所有tag如果你想查看当前HEAD或者某个特定的commit对应的所有tag,可以使用下面的命令:gittag--containsHEAD这个命令会列出包含当前HEAD的所有tag。如果你想查看某个特定commit的......
  • linux生成ssh的一对公钥和私钥,然后配置git ssh拉取仓库代码
    linuxserver中如果想通过ssh方式拉取代码,那么就需要做一些配置:1.需要linux生成ssh的一对公钥和私钥:具体可以参考这篇文章:https://www.cnblogs.com/pingguomang/p/17926730.html 2.把这个公钥配置到gitlab仓库的sshandgpgkeys中:进入gitlab密钥对设置settings页面->SSHan......
  • python 虚拟环境中无法调用git 命令 处理方法
    确认Git安装:首先,确保Git已经安装在您的系统上。打开命令行窗口,运行git--version检查Git是否已安装以及其版本。手动设置GIT_PYTHON_GIT_EXECUTABLE:如果Git已安装,但gitpython仍然找不到它,您可能需要手动设置环境变量GIT_PYTHON_GIT_EXECUTABLE。在WindowsPower......
  • 3 个好玩的前端开源项目「GitHub 热点速览」
    单休的周末总是短暂的,还没缓过神新的一周就又开始了。如果你和我一样状态还没有完全恢复,那就让上周好玩的开源项目唤醒你吧!每周GitHub上总是有一些让人眼前一亮的开源项目,上周好玩的前端项目特别多,比如这个3D地球的JavaScript组件Cesium,作为老牌地理信息可视化组件又一次......