技术背景

在git操作中,有时候为了保障线上分支的简洁性,会在.gitignore文件中屏蔽一些关键词,比如可以加一个*.txt来屏蔽掉项目中所有带txt后缀的文件,还可以加上*test*来屏蔽所有的本地测试文件或者目录(当然,这个操作需要谨慎,有时候线上版本也需要同步测试案例)。那么如果想在被屏蔽的文件中找几个特殊案例,传到线上版本去,要如何操作呢?

操作流程

  1. .gitignore文件中添加屏蔽关键词,比如我们添加一个pdb后缀的屏蔽关键词:*.pdb
  2. 首先我们进入一个空的目录,并创建一个pdb后缀的文件:
$ ll
total 8
drwxr-xr-x 2 dechin dechin 4096 Jun 16 09:25 ./
drwxr-xr-x 7 dechin dechin 4096 Jun 16 09:25 ../
$ git status
On branch constraint
Your branch is up to date with 'origin/constraint'. nothing to commit, working tree clean
$ touch test.pdb
$ ll
total 8
drwxr-xr-x 2 dechin dechin 4096 Jun 16 09:25 ./
drwxr-xr-x 7 dechin dechin 4096 Jun 16 09:25 ../
-rw-r--r-- 1 dechin dechin 0 Jun 16 09:25 test.pdb

此时如果我们查看再次查看git status,会跟前面一次得到一样的结果,因此我们创建的是一个pdb后缀的文件,而在.gitignore文件中已经屏蔽了所有pdb后缀的文件,因此git操作会自动忽略这个文件。

$ git status
On branch constraint
Your branch is up to date with 'origin/constraint'. nothing to commit, working tree clean
  1. 使用git add -f强制传到线上版本。
$ git add -f test.pdb
$ git status
On branch constraint
Your branch is up to date with 'origin/constraint'. Changes to be committed:
(use "git reset HEAD <file>..." to unstage) new file: test.pdb

可以看到此时的git状态中已经补充了对该pdb文件的更新,如果要传到线上版本,补充一步git commit -m 'xxx'git push即可。而如果我们想要取消上传的话,就需要走下面这一步操作。

4. 直接使用git reset xxx.pdb终止提交,或者也可以使用git reset HEAD <file>...来回退到某个指定的版本。

$ git reset test.pdb
$ git status
On branch constraint
Your branch is up to date with 'origin/constraint'. nothing to commit, working tree clean
$ ll
total 8
drwxr-xr-x 2 dechin dechin 4096 Jun 16 09:25 ./
drwxr-xr-x 7 dechin dechin 4096 Jun 16 09:25 ../
-rw-r--r-- 1 dechin dechin 0 Jun 16 09:25 test.pdb

可以看到操作之后在git的状态中已经没有了这个pdb文件,但是在系统上这个文件依然存在。另外如果需要回退到指定的版本,可以先用git log来查看相关的提交信息:

$ git log --oneline -n 5
0dfd492 (HEAD -> constraint, origin/constraint) Update the
ch3 model
d73457b Update the add hydrogen module
880a93e Update molecule file from dev
e873d8e Delete unused data
43cb306 Move the params module into forcefield

总结概要

使用.gitignore来屏蔽一些文件名的关键字是一个比较常规的操作,其目的是可以过滤掉一些只需要在本地保留而不是上传到远程仓库上面的这样一些文件。但是如果存在一些冲突,比如我们需要传到远程仓库上的文件的文件名,刚好在屏蔽的关键字清单内,此时就需要使用到本文介绍的一些操作方法,来强制上传文件。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/gitaddf.html

作者ID:DechinPhy

更多原著文章请参考:https://www.cnblogs.com/dechinphy/

打赏专用链接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

腾讯云专栏同步:https://cloud.tencent.com/developer/column/91958

CSDN同步链接:https://blog.csdn.net/baidu_37157624?spm=1008.2028.3001.5343

51CTO同步链接:https://blog.51cto.com/u_15561675

git添加被.gitignore忽略的文件的更多相关文章

  1. Git 小技巧:忽略某些文件的更改

    *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/dp9Mwq7vf0ASF_FftBN8Ww 作为一枚合格的代码贡献 ...

  2. 修改Atom 隐藏.gitignore忽略的文件/文件夹的配置

    参考链接:.gitignored files are hidden from tree view regardless of setting 假如Atom打开的文件夹有.gitignore 文件,会隐 ...

  3. .gitignore文件说明-git提交时可忽略的文件

    在我们平时做项目时,总有一些文件不想提交到服务器的版本管理上 这时就要设置相应的忽略规则,来忽略这些文件的提交 规则 作用/mtk 过滤整个文件夹*.zip 过滤所有.zip文件/mtk/do.c 过 ...

  4. Git中使用.gitignore忽略文件的推送

    转载自:https://blog.csdn.net/lk142500/article/details/82869018 windows下可以用另存为生成gitignore 文件 1 简介 在使用Git ...

  5. Github用.gitignore忽略指定文件

    .gitignore Github提供.gitignore这种功能,可以自己指定哪些文件可以不被管理.具体方法是在版本管理的根目录下(与.git文件夹同级)创建一个.gitignore. 应用实例 项 ...

  6. SVN、Git设置提交时忽略的文件

    个人正在使用的:global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.pyc *.pyo [Tt]humbs.db [Bb]in [ ...

  7. git提交时如何忽略一些文件

    起因 在使用git对软件进行版本管理的时候我们总有一些不需要提交到版本库里的文件和文件夹,或者在管理一个实际应用的开源项目的时候,不可以把带有数据库信息的文件上传到开源平台当中,这个时候我们就需要让g ...

  8. mac上通过git推送时忽略node_modules文件夹

    node_modules出现改动一般不需要通过git推送,如果不忽略node_modules每次安装新的包会出现几千条新变动,并没有必要推送 1.通过终端进入项目根目录 创建 .gitignore 文 ...

  9. git使用小技巧-忽略提交文件设置

    前言 我们可以把自己的代码放到github上,但是我们有的文件或者文件夹不想提交到github上,这时候用到一个忽略文件 操作方法 * 在项目根目录创建一个 .gitignore文件 * 打开.git ...

  10. 【Git】Git-add之后-忽略部分文件的方法

    Git-add之后-忽略部分文件的方法 SparkKafkaDemo - Streaming Statistics git add 部分_百度搜索 (1 封私信)git 中如何撤销部分修改? - 知乎 ...

随机推荐

  1. Celery 定义和调用异步任务Task

    https://docs.celeryq.dev/en/stable/userguide/tasks.html 使用app.task装饰器定义 需要通过导入celery app,然后使用@app.ta ...

  2. 3D组合地图在数据可视化大屏中的应用

    前言 当下数据可视化大屏展示的花样层出不穷,可视化大屏的C位越来越卷,地图的样式已经不再止步于普通的平面地图,在虚拟环境中探索和交互,今天我们要介绍的这一款3D组合地图可以将复杂的数据以直观的方式呈现 ...

  3. 【C#】【IO】【实例】统计多个文件夹下的图片

    因工作需要繁琐的进行同一目录多个文件夹下的图片统计,便使用代码来解决. 需求:统计的是多少个文件夹包含了图片,并非是统计有多少张图. 我们先用Python来创建一个现场环境(巩固巩固py知识): 1 ...

  4. Linux服务器安装好Jenkins,IP+端口无法访问的问题排查

    1.是否已安装jdk,命令:java -version 2.查看Jenkins进程是否还在,命令 ps -ef|grep jenkins 3.查看8080(Jenkins默认)端口号是否开放,命令:f ...

  5. kubernetes之部署war项目(二)

    kubernetes之部署war项目(二) k8s系列 源自我工作上的实际场景,记录于此. 现在老项目是war包形式,需要基于tomcat部署,因此在打包镜像时将tomcat带上的. 假设我的war项 ...

  6. kubernetes之部署nginx+vue前端(一)

    kubernetes之部署nginx+vue前端(一) k8s系列项目的部署方式之一使用了kubernetes部署nginx+vue前端. 一.打包前端 将dist与Dockerfile放到同一目录下 ...

  7. Programming Abstractions in C阅读笔记:p246-p247

    <Programming Abstractions in C>学习第68天,p246-p247总结,总计2页. 一.技术总结 本章通过"the game of nim(尼姆游戏) ...

  8. 新版以太坊Ethereum库ethersV5.0配合后端Golang1.18实时链接区块链钱包(Metamask/Okc)以及验签操作

    区块链去中心化思想无处不在,比如最近使用个体抗原自检替代大规模的中心化核酸检测,就是去中心化思想的落地实践,避免了大规模聚集导致的交叉感染,提高了检测效率,本次我们使用Ethereum最新的ether ...

  9. 你的JoinHint为什么不生效

    本文分享自华为云社区<你的JoinHint为什么不生效[绽放吧!GaussDB(DWS)云原生数仓]>,作者:你是猴子请来的救兵吗 . 引言 提起数据库的Hint,几乎每个DBA都知道这一 ...

  10. 一文带你了解两种Transformer文字识别方法

    摘要:受Transformer模型的启发,目前一些学者将该结构应用到文本行识别中,以替代RNN,取得了良好的效果,如在HGA-STR和 SRN. 当前的文本行识别器为拥有更强的序列语义能力,模型多采用 ...