【git】gitignore
gitignore
git专门有个文件用来管理那些不被纳入版本库的文件,这个文件是 [.gitignore],所有不被包含的都能放进去,但这个是有前提的。
前提
前提是文件如果没被git客户端tracked,那么该文件是可以直接添加到 [.gitignore] 中的;
否则,如果文件先被track到git项目中,那么即使该文件路径被加到 [.gitignore] 中,该文件的修改也是会被git项目跟踪到的。
实践1
模拟已经tracked到项目,查看文件的状态。
- $ cat .gitignore
- .idea
- .env
- $ git check-ignore -v .idea
- .gitignore::.idea .idea
- $ git check-ignore -v .env
- [这里显示的是空行]
同样都在gitignore文件中,为什么一个文件检查ignore状态是通过的,一个检查是失败的?
这里就有个区别:因为我们之前提交过[.env]文件,但是未提交过[.idea]。
这里要回顾下前提。
实践2
如果一个文件被tracked,则加入到 [.gitignore] 是失效的。
- $ vim .env
- [edit some line]
- $ git status .env
- Changes not staged for commit:
- (use "git add <file>..." to update what will be committed)
- (use "git checkout -- <file>..." to discard changes in working directory)
- modified: .env
- $ git check-ignore -v .env
- [这里输出的是空行,表示验证ignore失败]
这里能够看到,一个被tracked到项目中的文件,它的修改是能够被跟踪到的。
实践3
我们要如何操作?才能将该文件包含到gitignore中,从而它的修改删除状态,不会被git所跟踪
- $ git rm .env
- rm '.env'
- $ git status .env
- On branch branch_v1
- Your branch is up-to-date with 'origin/branch_v1'.
- Changes to be committed:
- (use "git reset HEAD <file>..." to unstage)
- deleted: .env
- $ git commit -m 'Remove: .env'
- [branch_v1 bebee11] Remove: .env
- file changed, deletions(-)
- delete mode .env
- $ git push origin branch_v1:branch_v1
- .......
- $ git check-ignore -v .env
- .gitignore::.env .env
最后可以看到,检查ignore状态是成功命中的。
回顾
如果一个文件已经包含在 [.gitignore] 文件中,但是它的修改仍然可以被跟踪到,那么这个文件是被tracked到项目中的,在gitignore包含它之前,它已经提交到项目中了。
解决办法:将该文件从git项目中删除掉即可。
具体操作:
1,将该文件备份到另一文件;
2,操作git命令,将该文件删除掉,然后commit & push到远程;
3,修改 [.gitignore] 文件,把该文件包含进去,然后git commit&push;
4,把1备份的文件重命名会原始文件,原始文件仍然在本地,但是不会被git所管理。
大致操作如下:
1, cp src_file src_backup
2, git rm [src_file]; git commit -m ''; git push origin;
3, vim .gitignore; git commit -m ''; git push origin;
4, cp src_backup src_file; rm src_backup;
更多扩展:
高级-Git官方:https://git-scm.com/docs/gitignore
【git】gitignore的更多相关文章
- 【git】删除某个文件的所有历史记录,批量删除远程分支
删除git某个文件的所有历史记录 git的目的就是版本控制,记录每一个版本的变动.然而有的时候我们往往希望从版本库中彻底删除某个文件,不再显示在历史记录中.例如不小心上传了一堆错误的文件,或者不小心上 ...
- 【Git】 GitLab简单使用
本例介绍简单实用GitLab,安装请参照[Git] GitLab服务器社区版安装与配置 1.用户和组的管理 a.创建组,在首页点击Create a group b.创建用户,在首页点击Add peop ...
- 【git】强制覆盖本地代码
[git]强制覆盖本地代码(与git远程仓库保持一致) 2018年04月27日 23:53:57 不才b_d 阅读数:21145 版权声明:本文为博主不才b_d原创文章,未经允许不得转载. || ...
- 【Git】远程分支
[Git]远程分支 转载:https://www.cnblogs.com/yangchongxing/p/10239270.html 目录 ============================ 1 ...
- 【Git】本地分支
[Git]本地分支 转载:https://www.cnblogs.com/yangchongxing/p/10221382.html 目录 ============================== ...
- 【Git】安装配置
[Git]安装配置 转载:https://www.cnblogs.com/yangchongxing/p/10173231.html 1.在 Ubuntu 上安装 $ sudo apt-get ins ...
- 【Git】学习开始
[Git]学习开始 转载:https://www.cnblogs.com/yangchongxing/p/10172683.html 在线电子书籍:https://git-scm.com/book/z ...
- 【Git】git使用 - 各种常用场景命令解决
(多看git中的各种帮助-h/--help,可能有你想要的命令) 1.分支的创建和切换 创建 >>>> git branch branchName 切换分支 >>& ...
- 【git】【Idea】git刷新获取远程分支列表,可以在idea上看到最新的远程分支列表
[前提:本地项目是从GitLab或gitHub这些远程仓库上拉下来的 ,并且本地安装了git] ==================================================== ...
随机推荐
- 爬虫介绍+Jupyter Notebook
什么是爬虫 爬虫就是通过编写程序模拟浏览器上网,然后让其去互联网上抓取数据的过程. 哪些语言可以实现爬虫 1.php:可以实现爬虫.php被号称是全世界最优美的语言(当然是其自己号称的,就是王婆 ...
- BBS--功能4:个人站点页面设计(ORM跨表与分组查询)
查询: 日期归档查询 1 date_format ============date,time,datetime=========== create table t_mul_new(d date,t t ...
- oracle数据库关闭了打开数据库
一.找到sqlplus
- vue ...mapMutations 的第一个参数默认为 数据对象state
1.实现回调后 路由的跳转 mutationsLoginHeaderBackFun(state,$router) { console.log(state); console.log($router); ...
- netty为啥要二次开发
很早之前就看过李林峰写的netty的书,但是感觉没有直接用到还是理解不够深入,现在的公司有两套自己基于Netty开发的系统,感觉才真正理解为啥要这么做 借用别人文章回顾下 https://www.cn ...
- 简洁的实现ls-l命令
现在我们来简洁的实现命令:了解一下相关知识: 我们使用掩码可以很明确的得出文件的每一种信息.关于掩码,上图中的S_IRUSR等均为掩码.我们来看看函数getpwuid,原型:struct passwd ...
- 【动态规划】最大子段和问题,最大子矩阵和问题,最大m子段和问题
http://blog.csdn.net/liufeng_king/article/details/8632430 1.最大子段和问题 问题定义:对于给定序列a1,a2,a3……an,寻找它 ...
- C++中 int i 与 int &i 注意事项
来源:http://blog.csdn.net/qianchenglenger/article/details/16949689 1.int i 传值,int & i 传引用 int i不会回 ...
- jquery Load方法的重要点
一个非常重要而且很容易忽视的问题就是:你是否load进了你必须load的元素,是否有的没有load进来,打开firebug查看一下
- js 替换字符串中所有匹配的字符
var str = 'abcadeacf'; var str1 = str.replace('a', 'o'); alert(str1); // 打印结果: obcadeacf var str2 = ...