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

初级-廖雪峰:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758404317281e54b6f5375640abbb11e67be4cd49e0000

【git】gitignore的更多相关文章

  1. 【git】删除某个文件的所有历史记录,批量删除远程分支

    删除git某个文件的所有历史记录 git的目的就是版本控制,记录每一个版本的变动.然而有的时候我们往往希望从版本库中彻底删除某个文件,不再显示在历史记录中.例如不小心上传了一堆错误的文件,或者不小心上 ...

  2. 【Git】 GitLab简单使用

    本例介绍简单实用GitLab,安装请参照[Git] GitLab服务器社区版安装与配置 1.用户和组的管理 a.创建组,在首页点击Create a group b.创建用户,在首页点击Add peop ...

  3. 【git】强制覆盖本地代码

    [git]强制覆盖本地代码(与git远程仓库保持一致) 2018年04月27日 23:53:57 不才b_d 阅读数:21145   版权声明:本文为博主不才b_d原创文章,未经允许不得转载. || ...

  4. 【Git】远程分支

    [Git]远程分支 转载:https://www.cnblogs.com/yangchongxing/p/10239270.html 目录 ============================ 1 ...

  5. 【Git】本地分支

    [Git]本地分支 转载:https://www.cnblogs.com/yangchongxing/p/10221382.html 目录 ============================== ...

  6. 【Git】安装配置

    [Git]安装配置 转载:https://www.cnblogs.com/yangchongxing/p/10173231.html 1.在 Ubuntu 上安装 $ sudo apt-get ins ...

  7. 【Git】学习开始

    [Git]学习开始 转载:https://www.cnblogs.com/yangchongxing/p/10172683.html 在线电子书籍:https://git-scm.com/book/z ...

  8. 【Git】git使用 - 各种常用场景命令解决

    (多看git中的各种帮助-h/--help,可能有你想要的命令) 1.分支的创建和切换 创建 >>>> git branch branchName 切换分支 >>& ...

  9. 【git】【Idea】git刷新获取远程分支列表,可以在idea上看到最新的远程分支列表

    [前提:本地项目是从GitLab或gitHub这些远程仓库上拉下来的 ,并且本地安装了git] ==================================================== ...

随机推荐

  1. 浅谈JSONObject与JSONArray的区别

    例如:一个json字符串如下: { "type":[{"a","1"},{"a","2"},{&qu ...

  2. ACM__容器之vector

    今天做题碰到了深搜的题,有一种存图方式需要用到vector,对vector不是很熟悉,回顾了一下 vector都知道是一个容器,但并不准确,它是一个多功能的能够操作多种数据结构和算法的模板类和函数库. ...

  3. 使用 Python 把多个 MP4 合成一个视频(转)

    这两天群里有个小伙伴有一个需求, 就是把很多个视频文件 合并成一个. 期间也找了各种软件, 如格式工厂, 但是只能一次合成50个文件, 小伙伴有几千个文件需要合成, 太繁琐; 又比如会声会影, 这个剪 ...

  4. delphi dxBarManager 的dxBarEdit 输入问题

    Developer Express 6 想做像office2007那样界面. 问题:dxBarManager1 里面添加了cxBarEditItem1 这是个文本框,运行可以输入内容,但是当焦点失去时 ...

  5. 一个linux内核模块移植到低版本时发生的异常

    在3.10的内核版本下,有一个运行稳定的内核模块,移植到suse11的时候,编译正常,运行则直接出现crash: <>[ <>[ 503.347300] Modules lin ...

  6. a stop job is running for Security Auditing Services

    内核是3.10.0-514.el7,启动时有如下报错: a stop job is running for Security Auditing Services(56s / 1min 30s) 系统启 ...

  7. python实现查找算法:二分查找法

    二分查找算法也称折半查找,基本思想就是折半,和平时猜数字游戏一样,比如猜的数字时67,猜测范围是0-100,则会先猜测中间值50,结果小了,所以就会从50-100猜测,中间值为75,结果大了,又从50 ...

  8. 使用__future__实现从python2.7到python3.x的过渡

    参考链接:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820023 ...

  9. unity 2048Game

    将游戏分为四个脚本,将数据和界面分开,这是开发模式常用的类似于mvc模式,但由于我们只用一个二位数组就可以保存数据,所以讲m省略 GameControllor 控制游戏数据的脚本, using Uni ...

  10. 吴裕雄 python 机器学习-Logistic(1)

    import numpy as np def loadDataSet(): dataMat = [] labelMat = [] fr = open('D:\\LearningResource\\ma ...