Git-命令行-我与忽略文件 .gitignore 的斗智斗勇
来源:互联网 发布:手机淘宝开店在哪里 编辑:程序博客网 时间:2024/06/10 07:37
我又遇到一个奇怪的问题
最近在学习 git 和 git 的命令行操作,之前用的都是开发工具自带的图形化管理工具,对原理也不是很清楚,所以系统学习一下。
今天看到 .gitgnore文件这部分,于是呢,我就在项目中添加,测试一下,然后呢,就发现我添加的规则并没有什么用,于是呢,就有了下面这篇博客的诞生。
什么是.gitgnore文件
.gitgnore,顾名思义,是忽略文件的意思。
之所以有它的存在,是因为有些文件没有上传到远程仓库的必要,一般是一些没有意义的文件,例如一些编译和运行过程中产生的中间文件,或者非常私密的文件,例如签名文件。
如何添加.gitgnore文件
当我们给一个项目使用 git init
添加 git 版本控制的时候,会自动生成 .git 文件 ,以及分别在 project 和 每个 module 中生成一个 .gitgnore 文件。
如下图:
当.gitgnore 创建的时候,里面会默认生成一部分内容,但是远远不够的,我们需要给它补充一点内容。
此时,语法不熟悉,也不知道应该忽略些什么,是不是很慌?
不要担心,有一个伟大的开源项目可以救你,gitignore , 这个github 上的开源项目把很多平台 例如 Android , iOS ,C++ 等等一般会用到的 .gitignore 忽略规则给集成到一起,我们找到我们开发平台对应的文件,打开,内容复制粘贴即可。
来张图感受一下~
验证规则是否生效
添加了忽略规则之后,你肯定想知道它有没有生效。
举个例子:
我的项目中 .gitignore 文件中有添加了如下内容:
# Freelinefreeline.pyfreeline/freeline_project_description.json
我想验证一下是否生效,可以尝试 git add <filename>
添加被忽略的文件,查看是否能添加成功:
还可以使用 git check-ignore -v <filename>
定位到对应规则 在 .gitignore 文件中的具体位置。
特殊情况!.gitignore 文件失效了!
首先,检查 .gitignore 文件是否是 project 中总的忽略文件,不要弄成 module 中的了。
其次,检查规则是否写错。
那问题来了,如果上面两个点都没有问题,但是就是不生效,是什么原因?
答案是,当远程仓库或者缓存区已经存在被忽略文件的情况下,这个时候相应的忽略规则是不起作用的。
孩子,你是不是后来才添加的 .gitignore 规则?
我们来测试一下,还用上面的例子,来确认一下是不是这个原因。首先,强制把 被忽略文件添加到缓存区,然后验证规则是否生效。
git add -f freeline.py //强制添加freeline.py 到缓存区git add freeline.py check-ignore -v freeline.py
然后将缓存中的 freeline.py 文件删除 之后再尝试:
git rm --cached freeline.py //将 freeline.py 从缓存区删除git add freeline.py check-ignore -v freeline.py
以上,证明原因的确如此。那么,答案也就慢慢浮现于眼前了,把被缓存文件从 git 的版本管理中删除。
首先,缓存文件从 git 的版本管理中有以下几个状态:
1.只在缓存区
文件较少时:
git rm --cached <filename>
文件较多时:
git rm -r --cached .git add .git commit -m 'XXXX'
2.已经 commit 提交了,但是还没有 push 到远程
这种情况下,我们需要使用撤销 commit 操作了,
git reset <commit_id> //这个命令, 把 commit 历史撤销,对应缓存区内容也撤销,工作区内容不变git add .git commit -m 'XXXX'
3.已经推送到远程
本地部分的,对应上面两种情况操作,远程仓库的,只能手动删除对应的文件了。
结语
这让我想起来一句话,之前一个同事每次遇到奇怪的 bug 时,都会说的一句话,代码不会说谎。
任何问题深究起来,都会找到答案。所以遇到问题,不要放弃,不要抱怨,不要烦躁,仔细分析,肯定能找到解决方法。
最后,晚安,世界。
- Git-命令行-我与忽略文件 .gitignore 的斗智斗勇
- 与企鹅斗智斗勇
- 苦逼码农与老板关于加薪的斗智斗勇
- Git .gitignore文件忽略
- git 忽略文件gitignore
- git忽略文件.gitignore
- Git忽略文件-gitignore
- 斗智斗勇
- Git忽略文件.gitignore的使用
- Git忽略文件.gitignore的使用
- Git忽略文件.gitignore的使用
- 德州扑克,一款斗智斗勇的游戏
- 监理工程师岁月--甲乙丙方的斗智斗勇
- git: .gitignore文件 (忽略文件)
- Git 笔记, 忽略文件(.gitignore)
- git 忽略提交文件.gitignore
- GIT刷新忽略文件.gitignore
- Git之忽略文件( .gitignore)
- 海量数据处理算法:Bloom Filter[转]
- ListView 的简单实现与优化并实现share动画Activity的跳转
- SPRING BOOT+ELASTICSEARCH+RABBITMQ
- Python012异常捕获
- STL之vector学习笔记
- Git-命令行-我与忽略文件 .gitignore 的斗智斗勇
- AWK说明-及语法格式。
- C 语言中 setjmp 和 longjmp
- PagerAdapter使用notifyDataSetChanged 但是视图并为改变的原因。
- spring内置ContextRefreshedEvent事件
- ArgumentError: multiline anchors (^ or $)
- 用指针实现 strncat()
- Android SDK Level
- 数据库基础