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] ==================================================== ...
随机推荐
-
dialog
function showDialog(){ var $by = $(window), obj = $('.dialog'), brsW = $by.width(), brsH = $by.heigh ...
-
OSGI框架学习
OSGI框架三个重要概念 OSGi框架是根据OSGi规范中定义的三个概念层设计的:模块.模块生命周期.服务. 模块层定义了OSGi模块的概念(bundle,即包含一个元数据MANIFEST.MF的JA ...
-
TCO 2014 Round 1C 概率DP
TCO round 1C的 250 和500 的题目都太脑残了,不说了. TCO round 1C 950 一个棋子,每次等概率的向左向右移动,然后走n步之后,期望cover的区域大小?求cover, ...
-
为tomcat启用nio机制
tomcat的运行模式有3种.修改他们的运行模式.3种模式的运行是否成功,可以看他的启动控制台,或者启动日志.或者登录他们的默认页面http://localhost:8080/查看其中的服务器状态. ...
-
[Form Builder]:CREATE_GROUP Built-in
Description Creates a non-query record group with the given name. The new record group has no colum ...
-
haproxy timeout server 46000 后台超时时间
[root@wx03 ~]# sh ./1.sh Wed Jul 6 19:54:40 CST 2016 <html><body><h1>504 Gateway T ...
-
hdu_5877_Weak Pair(离散+DFS+树状数组)
题目链接:hdu_5877_Weak Pair 题意: 给你一棵树,让你找有多少对满足那两个条件的weak pair 题解: 有人用Treap,我不会,然后我用树状数组+离散来替代Treap,用DFS ...
-
springmvc注解驱动
<?xml version="1.0" encoding="UTF-8"?> <beans xsi:schemaLocation=" ...
-
docker 1 (ubuntu docker install)
1.移除旧内核模块 sudo apt-get remove docker \ docker-engine \ docker.io 2. 添加https传输包 sudo apt-get update s ...
-
jquery 获取鼠标坐标
$("#x").text(event.pageX), $("#y").text(event.pageY);