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. UICollectionView自定义cell布局layout

    写一个类继承UICollectionViewLayout,这个类需要提供一个数组来标识各个cell的属性信息,包括位置,size大小,返回一个UICollectionViewLayoutAttribu ...

  2. vue 监听state 任意值变化、监听mutations actions

    // store.watch((state) => state.count + 1, (newCount) => { // console.log(' 监听') // }) // stor ...

  3. html:meta

    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale= ...

  4. 为什么MySQL不推荐使用子查询和join

    前言: 1.对于mysql,不推荐使用子查询和join是因为本身join的效率就是硬伤,一旦数据量很大效率就很难保证,强烈推荐分别根据索引单表取数据,然后在程序里面做join,merge数据. 2.子 ...

  5. 尚硅谷redis学习2-redis的安装和HelloWorld

    Reids: remote dictionary server redis特点:支持持久化,支持复杂数据类型,支持备份 下载: 解压: 执行make, make install 可能会需要安装make ...

  6. ORACLE问题定位基本方法

    在使用ORACLE过程中经常会碰到启动或者访问失败的问题.碰到这些问题该如何解决? 1.仔细阅读报错提示信息,不要扫一眼感觉似曾相识,凭经验就开始上手解决.因为相同的现象可能是不同的原因引发的. 2. ...

  7. org.hibernate.AssertionFailure: null id in xxx.xx.xx的问题

    今日在开发时遇到一个比较奇怪的问题,保存时报这个异常: org.hibernate.AssertionFailure: null id in com.aa.TShoucang null id,这个是什 ...

  8. Arcgis Runtime 100.3开发实例源代码调试日志

    Arcgis Runtime 100.3开发实例源代码调试日志 路径: "D:\arcgis runtime1003\arcgis-runtime-samples-dotnet-master ...

  9. 吴裕雄 python oracle操作数据库(4)

    import cx_Oracle conn = cx_Oracle.connect("scott/admin@localhost:1521/orcl")cursor = conn. ...

  10. Hadoop集群(二) HDFS搭建

    HDFS只是Hadoop最基本的一个服务,很多其他服务,都是基于HDFS展开的.所以部署一个HDFS集群,是很核心的一个动作,也是大数据平台的开始. 安装Hadoop集群,首先需要有Zookeeper ...