技术背景

在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. 使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的业务编码规则管理

    在前面随笔<在Winform应用中增加通用的业务编码规则生成>,我介绍了基于Winform和WPF的一个通用的业务编码规则的管理功能,本篇随笔介绍基于后端Web API接口,实现快速的Vu ...

  2. 数字孪生系统为何需要将GIS系统进行融合?

    数字孪生是一种通过数字模型实时仿真现实世界的技术,而GIS(地理信息系统)则是用于收集.存储.处理和展示地理数据的工具.将数字孪生系统与GIS系统进行融合,可以为各行业带来诸多优势和创新.那么数字孪生 ...

  3. 真的最后一次了——城院GO导航大作业迭代最终版

    真的!!!最后一次了!不骗人! 1.小程序的体验版二维码: 想体验的可以申请一下体验权限: 2.小程序目前功能介绍 1.首先进入是index页面:点击第一个是学校简介页面,第二个能直接跳到主程序的地图 ...

  4. SPSC Queue

    在多线程编程中,一个著名的问题是生产者-消费者问题 (Producer Consumer Problem, PC Problem). 对于这类问题,通过信号量加锁 (https://www.cnblo ...

  5. grafana_mysql安装

    https://dl.grafana.com/oss/release/grafana-5.4.0-1.x86_64.rpm #官网下载安装包 [root@zbx4_0 source]# rpm -iv ...

  6. 我用 Laf 开发了一个非常好用的密码管理工具

    [KeePass 密码管理]是一款简单.安全简洁的账号密码管理工具,服务端使用 Laf 云开发,支持指纹验证.FaceID,N 重安全保障,可以随时随地记录我的账号和密码. 写这个小程序之前,在国内市 ...

  7. 文心一言 VS 讯飞星火 VS chatgpt (44)-- 算法导论6.1 1题

    一.在高度为h的堆中,元素个数最多和最少分别是多少? 文心一言: 在高度为 h 的二叉搜索树(BST)中,元素个数最多和最少的情况分别如下: 1.最多情况:当每个节点都包含两个子节点时,BST 中的元 ...

  8. Luogu P1654 概率DP

    原题链接 题意 我们面前有一个长度为\(N\)的01序列,位置 \(a_i\) 有 \(p_i\) 的概率是1,否则为0. 序列中,一段长为 \(x\) 的连续1会带来 \(x^3\) 的加分(这段全 ...

  9. 19、Flutter StatelessWidget 、 StatefulWidget

    在Flutter中自定义组件其实就是一个类,这个类需要继承StatelessWidget  /  StatefulWidget. StatelessWidget是无状态组件,状态不可变的widget ...

  10. 神经网络入门篇:详解为什么需要非线性激活函数?(why need a nonlinear activation function?)

    为什么需要非线性激活函数? 为什么神经网络需要非线性激活函数?事实证明:要让的神经网络能够计算出有趣的函数,必须使用非线性激活函数,证明如下: 这是神经网络正向传播的方程,现在去掉函数\(g\),然后 ...