git忽略已经被提交的文件

Git系列之首次提交项目到远程Git库与忽略提交文件 废话不多说,此篇博文主要是功能性的东西,按照我的步骤就可以轻松完成项目快速提交到远程Git库,并且忽略掉你不想提交的文件,接下来上干货!!!(此时默认你已经在远程Git上面建好了仓库,如果有不会的童鞋可以给我反馈,以后补给大家。)步骤如下:首先在开始前,给大家增加一个SVN的忽略文件快速添加的方式,大家打开Android Studio,并且选择Settings找到Ignored Files通过"+... 阅读详情

现在项目的根目录放了 .gitignore 文件,并且git远程仓库的项目根目录已经有了 logs文件夹。

由于每次本地运行项目,都会生成新的log文件,但是我并不想提交logs文件夹里面的内容,所以要在.gitignore写logs的规则。

我尝试过添加以下规则
logs/*.log
logs/
/logs/

但是运行git status的时候,始终能看到modified:logs/xx.log 

正确的做法应该是:git rm --cached logs/xx.log,然后更新 .gitignore 忽略掉目标文件,最后 git commit -m "We really don't want Git to track this anymore!"

具体的原因如下:

被采纳的答案虽然能达到(暂时的)目的,但并非最正确的做法,这样做是误解了 git update-index 的含义,而且这样做带来的最直接(不良)后果是这样的:

  1. 所有的团队成员都必须对目标文件执行:git update-index --assume-unchanged <PATH>。这是因为即使你让 Git 假装看不见目标文件的改变,但文件本身还是在 Git 的历史记录里的,所以团队的每个人在 fetch 的时候都会拉到目标文件的变更。(但实际上目标文件是根本不想被 Git 记录的,而不是假装看不见它发生了改变)

  2. 一旦有人改变目标文件之后没有 git update-index --assume-unchanged <PATH> 就直接 push 了,那么接下来所有拉取了最新代码的成员必须重新执行 update-index,否则 Git 又会开始记录目标文件的变化。这一点实际上很常见的,比如说某成员换了机器或者硬盘,重新 clone 了一份代码库,由于目标文件还在 Git 的历史记录里,所以他/她很可能会忘记 update-index。

首先,git update-index 的定义是:

Register file contents in the working tree to the index(把工作区下的文件内容注册到索引区)

这句话暗含的意思是:update-index 针对的是 Git 数据库里被记录的文件,而不是那些需要忽略的文件。

接着看关于 --assume-unchanged 的几句相关的描述:

When the "assume unchanged" bit is on, Git stops checking the working tree files for possible modifications, so you need to manually unset the bit to tell Git when you change the working tree file. This is sometimes helpful when working with a big project on a filesystem that has very slow lstat(2) system call (e.g. cifs).

大致意思是:

应用了该标识之后,Git 停止查看工作区文件可能发生的改变,所以你必须 手动 重置该标识以便 Git 知道你想要恢复对文件改变的追踪。当你工作在一个大型项目中,这在文件系统的 lstat 系统调用非常迟钝的时候会很有用。

我们知道 Git 不仅仅是用来做代码版本管理的,很多其他领域的项目也会使用 Git。比如说我公司曾经一个客户的项目涉及到精密零件图纸文档的版本管理,他们也用 Git。有一种使用场景是对一些体积庞大的文件进行修改,但是每一次保存 Git 都要计算文件的变化并更新工作区,这在硬盘慢的时候延迟卡顿非常明显。

git update-index --assume-unchanged 的真正用法是这样的:

  1. 你正在修改一个巨大的文件,你先对其 git update-index --assume-unchanged,这样 Git 暂时不会理睬你对文件做的修改;
  2. 当你的工作告一段落决定可以提交的时候,重置改标识:git update-index --no-assume-unchanged,于是 Git 只需要做一次更新,这是完全可以接受的了;
  3. 提交+推送。

另外,根据文档的进一步描述:

This option can be also used as a coarse file-level mechanism to ignore uncommitted changes in tracked files (akin to what .gitignore does for untracked files).

这段描述告诉我们两个事实:

  1. 虽然可以用其来达成楼主想要的结果,但这是不讲究的做法(coarse);
  2. 同样的事情更应该用 .gitignore 文件来实现(针对未追踪的文件)。

随之而来的问题是:为什么我增加了 .gitignore 里的规则却没有效果?

这是因为我们误解了 .gitignore 文件的用途,该文件只能作用于 Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。

之所以你的规则不生效,是因为那些 .log 文件曾经被 Git 记录过,因此 .gitignore 对它们完全无效。这也正是开头那段简短答案所做的事情:

  1. 从 Git 的数据库中删除对于该文件的追踪;
  2. 把对应的规则写入 .gitignore,让忽略真正生效;
  3. 提交+推送。

只有这样做,所有的团队成员才会保持一致而不会有后遗症,也只有这样做,其他的团队成员根本不需要做额外的工作来维持对一个文件的改变忽略。

最后有一点需要注意的,git rm --cached 删除的是追踪状态,而不是物理文件;如果你真的是彻底不想要了,你也可以直接 rm+忽略+提交。


IDEA设置GIT忽略文件提交 情景一:从未提交过的文件 我们是项目组长,组内员工总是会误把本地的一些文件提交上git,以下以target目录为例,我们过滤这个文件夹的所有内容不允许提交 一、在项目根目录下新建.gitignore文件,内容如下 target/ 可以看到target文件变成了这种黄色,这即代表这个文件夹无法提交了。 需要注意的是这个方法只对未关联至git的文件或者文件夹有效,所以最好能在项目构建初期就设置好 情景二:已经推送(push)过的文件但是是不需要提交的文件 情景一的方法,只能是对于没有提交过的文件,但如果有文 阅读详情

相关推荐

Genesis物理引擎实战指南:轻量级确定性刚体仿真核心

刚体物理仿真作为机器人控制、嵌入式运动学验证和确定性游戏开发的基础技术,其核心在于数值稳定性、跨平台可复现性与约束求解精度。本文围绕线性互补问题(LCP)求解、半隐式欧拉积分和零依赖C++实现三大关键技术展开,解析如何在无GUI、低算力环境下构建可单步调试、帧级可控的确定性仿真系统。重点覆盖碰撞检测数学建模、关节局部坐标系绑定、质量-惯性张量一致性校验等工程落地关键点,适用于STM32、树莓派及教育实验场景。内容深度结合Genesis Physics Engine的源码实践,直击‘穿模’‘NaN’‘关节发软

ciya3282的博客 1590

【git】忽略文件两种方式

git忽略文件和文件夹

qq_40881695的博客 3014

MATLAB控制信号发生器(USB-GPIB-HS)GPIB仪器控制教程(含matlab代码)

自动化测试时需要自动产生信号,通过matlab控制信号发生器的频率与功率,以实现自动化信号生成输出

qq_43686057的博客 1606

如何删除git上的commit提交log

1.复制要回到的记录的key 2.打开Git Bash命令框通过命令git reset --soft key / git reset –hard key (区别:soft回滚后本地仍会保留修改的记录,hard回滚后不会保留记录会直接回到变更后的代码版本) 3.回车之后使用git push origin 分支 –force 提交,log记录就被删除了 ...

一名软件修理工的博客 3645

Simscape Multiboby学习笔记1——跟着官网学Multibody

文章目录一. 引言二. Simscape Multibody自学之路三. 本教程的目录 一. 引言 最近在倒腾Matlab的动力学仿真,起因是看到有人推荐Matlab的multbody模块,一经了解之下简直惊为天人。作为一名Matlab的小粉,看到这么好用的模块简直不要太开心,之前用simulink搭飞行器的仿真模型,虽然能够仿真看到六自由度位移,毕竟不能可视化,还是很不够直观,而且simulink仿真(以及更费力的脚本文件仿真)需要精确建模,模型不精确计算也是天差地别。而Multibody在具备其他动力学

qq_30267617的博客 8241

避坑!瑞萨RZ/N2L用J-Link下载调试的那些‘坑’(从驱动版本到硬件架构选择)

本文详细解析了瑞萨RZ/N2L开发中使用J-Link调试时常见的兼容性问题与解决方案,包括驱动版本选择、SWD连接优化及e2 studio调试技巧。特别针对硬件架构与驱动版本的匹配问题提供了实用对照表,帮助开发者高效避开调试陷阱,提升开发效率。

weixin_30576827的博客 441

git如何忽略已经被追踪的文件夹

有时我们想忽略一些文件或者目录,但是这些文件或者目录已经被提交过了,这时你再添加到.ignore文件就会发现无法取消对这些文件的忽略。

weixin_43265199的博客 894

【NVIDIA】Jetson Orin Nano系列:烧写Ubuntu22.04

Jeson Orin Nano系列:烧写Ubuntu22.04 电脑主机可以是Ubuntu20.04

郭老二 4895

Git——忽略文件的4种方法

如果你有一个像web.config这样的配置文件需要被Git跟踪,但希望忽略本地更改,那么这种情况无法用.gitignore解决。我们展示了实现这一目标的替代方法。

寒冰屋的专栏 2万+

Gmsh+OCC对应版本库编译

输入 GMSH_DLL_EXPORT值C:\LIB\OCCT-7_8_0-i;9、如果只是生成库文件编译gmesh工程即可生成文件在C:\LIB\Gmsh\gmsh-4.13.1-Windows64-B\Debug 下gmsh.dll、gmsh.lib、gmsh.h、gmshc.h文件;3、CMAK编译Gmsh对应OCC版本的,CMAK选择源文件路径C:\LIB\Gmsh\gmsh-4.13.1-source,生成构建文件路径C:\LIB\Gmsh\gmsh-4.13.1-Windows64-B。

u013401364的博客 411

【系统架构设计师-2023年真题】综合知识-答案及详解

要实现多任务间的协同工作,操作系统必须提供任务间的通信手段。嵌入式操作系统一般都会提供多任务间通信的方法,其中()是任务间最直接、最明显的通信方法,也是访问共享的数据结构,即不同的任务都可以访问同一地址空间。()作为一种更高级的通信方式,能够在同一处理器的各个任务间传递任意长度(理论上只受物理内存和机器字长限制)的信息。(1)A. 共享内存 B. Socket C. 消息传递 D. 信号量(2)A. 共享内存 B. Socket C. 消息传递 D. 信号量【答案】A、C关于星型拓扑结构,下列说法正确的是(

数据知道的博客 1万+

如何忽略已经提交到 Git 仓库中的文件

在日常开发中,我们常常会遇到这样的情况:不小心将不应追踪的文件提交到了 Git 仓库中,例如配置文件、临时文件等。尽管可以通过.gitignore文件来忽略这些文件,但如果文件已经被提交到远程仓库,那么仅仅在.gitignore中添加规则并不能让 Git 忽略它们。本文将详细介绍如何处理这种情况,并最终使 Git 忽略这些文件。通过本文,我们详细介绍了如何忽略已经提交到 Git 仓库中的文件,包括确认文件是否已被提交、修改文件、重命名文件以避免追踪以及提交和推送更新等步骤。

Huahua_1223的博客 3299

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【Git】将已有的项目提交到Git,如何忽略已经提交的文件

一、将已有的项目提交到Git 场景:在本地存在已经建好的项目 demo ,我们想将 demo 项目提交到 github 上,下面介绍下操作步骤。 1、登录 github,创建同名的 demo 工程 https://github.com/zhibo/demo。 2、通过命令行访问本机的 demo 目录。 3、在 demo 目录中生成本地 git 管理,并自动建立一个隐藏 .git 目录。 gi...

香草天空Sky的博客 1919

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

git忽略提交(git如何忽略某个文件的提交)

如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录。在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。这种方式通过在项目的某个文件夹下定义 .gitignore 文件,在该文件中定义相应的忽略规则,来管理当前文件夹下的文件的Git提交行为。开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用!

troublemaker3333的博客 6699

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

git忽略某个文件的提交

首先在你git所管理文件夹根目录下,创建一个名为 .gitignore 的文件,随后将你需要忽略的文件都放到这里即可。这种情况适用于,每个人修改了项目的配置,但是这个是临时的,只适用于自己本地的情况,不可提交给大家公用时,需要这么做。图中表示 “config/index.js 会被即将到来的分支所覆盖,请在切换分支前进行提交”,能找到的唯一手段是。例如: 在.gitignore这个文件存在前,.project这个文件已经托管提交给git了,git依然会帮我们提交,这时候需要用到第二种方法。

日常工作记录,解决实际问题,不成体系。 1351

git提交设置忽略文件

在使用eclipse或者Idea或者直接使用git命令提交文件到git上时,有些文件需要被忽略,不进行提交,比如本地生成的target或者.project等本地文件 git提供了相应的忽略设置.gitignore 具体配置: 在版本管理的根目录下(与.git文件夹同级)创建一个 .gitignore,如果已有可以不用 创建,在里面配置相应的过滤条件,配置条件之后里面的所有子层级目录文件都会...

常年被追砍的博客 1343

Git忽略已经提交过一次文件Git忽略文件

Git忽略已经提交过一次文件Git忽略文件 文章目录Git忽略已经提交过一次文件Git忽略文件Git忽略已经提交过一次文件Git忽略文件从未push过已经push过的删除git仓库文件,本地保留git远程仓库和本地都删除已经推送(push)过的文件,想在以后的提交时忽略此文件,即使本地已经修改过,而且不删除git远程库中相应文件扩展其它命令本地创建分支并提交到远程分支上其它命令 Git忽略已经提交...

陈袁的博客 2445

git 忽略某个文件的提交

1. 将某文件永久忽略,不提交至git 首先在你git所管理文件夹根目录下,创建一个名为.gitignore的文件, 随后将你需要忽略的文件都放到这里即可。 注意 这种方式对已经提交到git上面的文件是无法奏效的,例如在.gitignore这个文件存在前, .project这个文件已经托管提交给git了, 那后面在.gitignore这个文件里添加.project表示忽略这个文件也不行, git依然会帮我们提交这时候需要用到第二种方法。 2. 忽略某个已经托管给git的文件,防止二次提交..

熊小露的博客 1548

git 怎么提交忽略文件夹_git提交忽略文件或文件夹

在项目根目录下面 添加 .gitignore文件文件中每一行表示需要忽略的文件的正则表达式。.gitignore文件过滤有两种模式,开放模式和保守模式1. 开放模式负责设置过滤哪些文件和文件夹例如: /target/ 表示项目根目录下的target文件夹里面所有的内容都会被过滤,不被GIT 跟踪.classpath 表示项目根目录下的.classpath文件会被过滤,不被GIT跟踪2. 保守模式负...

weixin_39750195的博客 1854

git 怎么提交忽略文件夹_Git忽略提交规则

在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。简单来说一个场景:在你使用git add .的时候,遇到了把你不想提交的文件也添加到了缓存中去的情况,比如项目的本地配置信息,如果你上传到Git中去其他人pull下来的时候就会和他本地的配置有冲突,所以这样的个性化配置文件我们一般不把它推送到git服务器中...

weixin_33954874的博客 1048

git忽略某些文件提交

在项目中有些配置文件不需要提交,但是有同学在后面开发中发现在.igonore文件中无论如何都无法忽略某些文件的提交。原因在这里: 已经维护起来的文件,即使加上了gitignore,也无济于事。---- 那么如何解决呢?方式如下 git update-index --assume-unchanged 要忽略的文件夹/文件夹下文件名 比如我要忽略项目下.idea文件夹下所有xm...

abcd199403的博客 609

git忽略某个文件的提交(转载)

git 免提交

zy103118的博客 2370

git忽略提交文件

目录本机当前仓库有效忽略单个仓库中的文件(远程共用)本机全局忽略删除已经push的文件使用git提交时, 可以通过设置.git/info目录下的exclude文件添加忽略文件(仅仅在本地生效, 不会同步到远程仓库)所以最适合自己使用的文件。只在本机当前仓库起效 每一行一个忽略文件,这里是根目录的相对目录。然后保存即可, 已加入版本控制的无效在仓库的根目录下新建 .gitignore 文件,在文件里配置忽略规则,同时把 .gitignore 文件加入版本管理。之后可以同步该配置到远程仓库, .gitignor

瑶山的博客 2381
上一篇: CSS 中已设置的left属性清除
下一篇: windows 下安装mysql
wolf131721
博客等级 码龄9年 38粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值