【Git企业开发】第六节.配置 Git和标签管理

news2024/11/27 7:42:09

文章目录

  • 前言
  • 一、配置 Git
  •       1.1 忽略特殊文件
  •       1.2 给命令配置别名
  • 二、标签管理
  •        2.1 理解标签
  •        2.2 创建标签
  •        2.3 操作标签
  • 总结


前言

一、配置 Git

1.1 忽略特殊文件

在日常开发中,我们有些文件不想或者不应该提交到远端,比如保存了数据库密码的配置文件,那怎么让Git知道呢?


在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件了。

注意:不需要从头写.gitignore文件,gitee在创建仓库时就可以为我们生成,不过需要我们主动勾选一下:

图示示例:

如果当时没有选择这个选择,在工作区创建一个也是可以的。无论哪种方式,最终都可以得到一个完整的.gitignore文件,

举例说明:

例如我们想忽略以.so和.ini结尾所有文件,.gitignore的内容如下:

代码举例:

# 省略选择模本的内容
...
# My configurations:
*.ini
*.so
在 .gitignore 文件中也可以指定某个确定的文件。

最后一步就是把 .gitignore 也提交到远端,就完成了:

代码示例:

hyb@139-159-150-152:~/git_teaching$ vim .gitignore
hyb@139-159-150-152:~/git_teaching$ git add .
hyb@139-159-150-152:~/git_teaching$ git commit -m"add .gitignore"
[master 97811ab] add .gitignore
file changed, 3 insertions(+)
create mode 100644 .gitignore
hyb@139-159-150-152:~/git_teaching$ git push origin master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 362 bytes | 362.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:hyb91/git_teaching.git
60e6b0a..97811ab master -> master

接着我们就来验证⼀下.gitignore文件的能力,在工作区新增两个文件 a.so b.ini。
代码示例:
hyb@139-159-150-152:~/git_teaching$ touch a.so b.ini
hyb@139-159-150-152:~/git_teaching$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean

检验.gitignore的标准就是git status命令是不是说 working tree clean 。我们发现Git并没有提示在工作区中有文件新增,果然.gitignore生效了!


但有些时候,你就是想添加一个文件到Git,但由于这个文件被.gitignore忽略了,根本添加不了,那么可以用-f 强制添加:

代码示例:
$ git add -f [filename]
或者你发现,可能是.gitignore 写得有问题,需要找出来到底哪个规则写错了,
比如说a.so文件是要被添加的,可以用git check-ignore命令检查:
代码示例:
hyb@139-159-150-152:~/git_teaching$ git check-ignore -v a.so
.gitignore:3:*.so a.so

Git 会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。


还有些时候,当我们编写了规则排除了部分文件时,例如:

# 排除所有.开头的隐藏文件:
.*
但是我们发现.*这个规则把.gitignore也排除了。虽然可以用git add -f 强制添加进去,但有强迫症的童鞋还是希望不要破坏.gitignore规则,
这个时候,可以添加一条例外规则:
# 不排除.gitignore
!.gitignore
把指定文件排除在.gitignore|规则外的写法就是:!+文件名,所以,只需把例外文件添加进去即可。


1.2 给命令配置别名

在我们使用Git期间,有些命令敲的时候着实让人头疼(太长了。。),幸运的是,git支持对命令进行简化!!!

举个例子,将git status简化为 git st,对应的命令为:

1 $ git config --global alias.st status

--global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。

如果不加,那只针对当前的仓库起作用。

好了,现在敲git st看看效果:

代码示例:

hyb@139-159-150-152:~/git_teaching$ git st
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean

再来配置一个git last,让其显示最后一次提交信息:

 $ git config --global alias.last ' log1"

这样,用git last就能显示最近一次的提交:

代码示例:

hyb@139-159-150-152:~/git_teaching$ git last
commit 97811abd1d43774aeb54fee32bf4fc76b2b08170 (HEAD -> master, origin/master,
Author: hyb91 <2689241679@qq.com>
Date: Fri May 12 17:27:06 2023 +0800
add .gitignore

不过,我个人还是不推荐大家现在去使用他,等大家工作了,再去简化自己的工作吧,目前所有的命令都要手动完成,尽快适应Git。


二、标签管理

2.1 理解标签

标签tag,可以简单的理解为是对某次commit的一个标识,相当于起了一个别名。

例如,在项目发布某个版本的时候,针对最后一次commit起一个v1.0这样的标签来标识里程碑的意义。


这有什么用呢?

相较于难以记住的commit id , tag 很好的解决这个问题,因为tag一定要给一个让人容易记住,且有意义的名字。当我们需要回退到某个重要版本时,直接使用标签就能很快定位到。


2.2 创建标签

在Git中打标签非常简单,

(1)首先,切换到需要打标签的分支上。

代码示例:

hyb@139-159-150-152:~/git_teaching$ git branch
* master

(2)然后,敲命令git tag [name]就可以打一个新标签:

代码示例:
1 hyb@139-159-150-152:~/git_teaching$ git tag v1.0

(3)可以用命令git tag查看所有标签: 

代码示例:

hyb@139-159-150-152:~/git_teachings git tag2

v1.0


默认标签是打在最新提交的commit上的。那如何在指定的commit上打标签呢?

方法是找到历史提交的commit id,然后打上就可以了,

代码示例如下:

# 历史记录
hyb@139-159-150-152:~/git_teaching$ git log --pretty=oneline --abbrev-commit
97811ab (HEAD -> master, tag: v1.0, origin/master, origin/HEAD) add .gitignore
60e6b0a update README.md.
7ce3183 create file.txt
c6ce3f0 Initial commit
# 对 Initial commit 这次提交打标签
hyb@139-159-150-152:~/git_teaching$ git tag v0.9 c6ce3f0
hyb@139-159-150-152:~/git_teaching$ git tag
v0.9
v1.0

注意:
标签不是按时间顺序列出,而是按字母排序的。
可以用git show [tagname]查看标签信息
代码示例:
hyb@139-159-150-152:~/git_teaching$ git show v1.0
commit 97811abd1d43774aeb54fee32bf4fc76b2b08170 (HEAD -> master, tag: v1.0, orig
Author: hyb91 <2689241679@qq.com>
Date: Fri May 12 17:27:06 2023 +0800
add .gitignore
diff --git a/.gitignore b/.gitignore
...

Git还提供可以创建带有说明的标签,用-a指定标签名,-m指定说明文字,

格式为:

git tag -a [name] -m "XXX" [commit_id]
另外,打完标签之后,使用 tree .git命令 查看一下你的本地库有什么变化 ,肯定能帮助你理解!

2.3 操作标签

如果标签打错了,也可以删除:

代码示例:

hyb@139-159-150-152:~/git_teaching$ git tag
v0.9
v1.0
hyb@139-159-150-152:~/git_teaching$ git tag -d v0.9
Deleted tag 'v0.9' (was c6ce3f0)
hyb@139-159-150-152:~/git_teaching$ git tag
v1.0

因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

如果要推送某个标签到远程,使用命令git push origin <tagname>

代码示例:

hyb@139-159-150-152:~/git_teaching$ git tag
v1.0
hyb@139-159-150-152:~/git_teaching$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:hyb91/git_teaching.git
* [new tag] v1.0 -> v1.0
此时,查看远端码云,看到了标签已经被更新!完美!
图示示例:

当然,如果你本地有很多标签,也可以一次性的全部推送到远端:

使用命令git push origin --tags


如果标签已经推送到远程,要删除远程标签就⿇烦⼀点,先从本地删除:
代码示例:本地删除
hyb@139-159-150-152:~/git_teaching$ git tag
v1.0
hyb@139-159-150-152:~/git_teaching$ git tag -d v1.0
Deleted tag 'v1.0' (was 97811ab)
然后,从远程删除。删除命令也是push,但是格式如下:
代码示例:远程删除
hyb@139-159-150-152:~/git_teaching$ git push origin :refs/tags/v1.0
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:hyb91/git_teaching.git
- [deleted] v1.0
在码云上查看确实删除成功:

总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1188430.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HGHAC4.2.1开启DCS Failsafe Mode的步骤

瀚高数据库 目录 环境 文档用途 详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5.8 文档用途 本文档用于介绍hghac4.2.1版本开启dcs failsafe mode的步骤及验证方法 详细信息 一、新增功能说明 Hghac4.2.1封装自patroni3.…

嵌入式养成计划-51----ARM--ARM汇编指令--内存读写指令--程序状态寄存器传输指令--软中断指令--混合编程

一百二十七、内存读写指令 通过内存读写指令可以实现向内存中写入指定数据或者读取指定内存地址的数据 127.1 单寄存器内存读写指令 将一个寄存器中的数值写入到内存&#xff0c;或者从内存中读取数据放在某一个指定寄存器中 127.1.1 指令码和功能 1. 向内存中写&#xff…

求极限问题:x趋于0时的等价替换及其适用条件、洛必达法

x趋于0时的等价替换及其适用条件 等价无穷小的定义&#xff1a; 若 lim ⁡ β α 1 \lim\dfrac{\beta}{\alpha}1 limαβ​1&#xff0c;则 β \beta β 与 α \alpha α 是等价无穷下的&#xff0c;记作 α ∼ β \alpha \sim \beta α∼β. 即当两个函数相比取极限&…

数据结构与算法(Java版) | 万字详解算法的时间复杂度

下面我们用一个问题来引出算法的时间复杂度这一概念。 该问题是&#xff0c;怎么去衡量一个程序&#xff08;或者算法&#xff09;的执行时间呢&#xff1f;就拿我们刚刚讲的排序算法来说&#xff0c;排序算法这么多&#xff0c;你又如何知晓哪一个排序算法执行的时间谁长谁短…

【ElasticSearch系列-07】ES的开发场景和索引分片的设置及优化

ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…

如何制作产品图册?教你一招,轻松制作

制作产品图册是许多企业都会做的一项工作&#xff0c;它可以帮助企业更好地展示自己的产品&#xff0c;提高品牌形象和销售业绩。但是&#xff0c;如何制作一本高质量的产品图册呢&#xff1f;今天&#xff0c;我就来分享一些实用的技巧和方法&#xff0c;帮助你轻松制作一本精…

java实现前后端分离文件下载

前言&#xff0c;这里用的是springbootvue前后端分离 首先我们把需要下载的文件放入到resource目录下面 RestController RequestMapping("/excelDown") Slf4j public class InvestExcelDownController {//下载模板PostMapping("/download")public void dow…

SOME/IP 协议介绍(三)参数和数据结构的序列化

参数和数据结构的序列化 序列化是基于接口规范定义的参数列表。为了允许服务接口的迁移&#xff0c;反序列化&#xff0c;代码应忽略附加在先前已知的参数列表末尾的参数&#xff1b;也就是说&#xff0c;忽略在用于生成或参数化反序列化代码的接口规范中未定义的参数。 接口…

java动态设置注解值

描述&#xff1a;在运行时根据需求更改注解中的值 一、步骤 1.定义类 public class CadreListQueryDTO extends CadreBaseQueryDTO {/*** 出国事由*/QueryField(field "A21.a2114",type QueryField.LIKE)private String a2114; }2.定义方法进行动态设置 /*** 动…

Maven 从入门到精通

目录 一. 前言 二. Maven 下载与安装 2.1. 下载 2.2. 安装 三. Maven 核心概念 3.1. POM 3.2. 约定的目录结构 3.3. 坐标 3.4. 依赖管理 3.4.1. 直接依赖和间接依赖 3.4.2. 依赖的排除 3.4.3. 统一的版本管理 3.4.4. 依赖范围 3.5. 仓库 3.6. 生命周期/插件/目标…

去中心化数据云项目Oort主网即将上线

备受期待的去中心化数据云项目Oort&#xff0c;今日已通过官方X账号官宣&#xff0c;将于纽约时间11月27日正式上线主网Olympus Protocol。届时&#xff0c;用户也能够通过Oort的Ale Wallet钱包和开发者API使用主网&#xff0c;并可通过OORT浏览器查询交易和合约&#xff0c;开…

OpenAI开源全新解码器,极大提升Stable Diffusion性能

在11月7日OpenAI的首届开发者大会上&#xff0c;除了推出一系列重磅产品之外&#xff0c;还开源了两款产品&#xff0c;全新解码器Consistency Decoder&#xff08;一致性解码器&#xff09;和最新语音识别模型Whisper v3。 据悉&#xff0c;Consistency Decoder可以替代Stabl…

如何实现Debian工控电脑USB接口安全管控

Debian 作为工控电脑操作系统具有稳定性、安全性、自定义性和丰富的软件包等优势&#xff0c;适用于要求高度可靠性和安全性的工控应用。 Debian 作为工控电脑操作系统在工业控制领域有很大优势&#xff0c;包括&#xff1a; 稳定性&#xff1a;Debian 的发布版以其稳定性而闻…

等保评测是什么意思

等保评测是一种信息安全评估标准&#xff0c;是国家信息安全管理机构为确保信息安全而对信息系统的安全性能进行定期评估的行为。它主要用于评估网络安全的实现情况&#xff0c;包括组织和技术。 等保评测具有系统性和综合性&#xff0c;能够及时发现网络安全风险&#xff0c;…

云闪付app拉新 地推和网推百搭项目 升级涨价啦 附一手渠道

云闪付为银联的支付产品&#xff0c;在地推网推拉新项目市场里也是比较稳定的项目 可以通过”聚量推客“ 渠道申请推广 今天平台拿到了更好的政策价格 价格再次上涨&#xff0c;地推和网推的小伙伴们可以申请推广哦&#xff0c;百搭项目

基于范数求解缩放因子方法的MIMO系统预编码技术matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1. MIMO系统模型 4.2. 基于范数求解缩放因子的预编码技术 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心程序 。。。。。。。。。。。。。。。…

使用Docker部署开源分布式任务调度系统DolphinScheduler

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 使用Docker部署开源分布式任务调度系统DolphinScheduler 文章目录 使用Docker部署开源分布式任务…

计数排序【java实现】

一、计数排序 排序特点&#xff1a; 输入元素大于等于零&#xff0c;当输入的元素是 n 个 0 到 k 之间的整数时&#xff0c;它的运行时间是 O(n k)。计 数排序不是比较排 序&#xff0c;排序的速度快于任何比较排序算法。适合数据范围小的数组。 核心思想&#xff1a; 找出…

Java单元测试及常用语句

1、前言 编写Java单元测试用例&#xff0c;即把一段复杂的代码拆解成一系列简单的单元测试用例&#xff0c;并且无需启动服务&#xff0c;在短时间内测试代码中的处理逻辑。写好Java单元测试用例&#xff0c;其实就是把“复杂问题简单化&#xff0c;建单问题深入化“。在编写的…

Python - 利用 OCR 技术提取视频台词、字幕

目录 一.引言 二.视频处理 1.视频样式 2.视频截取 ◆ 裁切降帧 ◆ 处理效果 3.视频分段 三.OCR 处理 1.视频帧处理 2.文本识别结果 3.后续工作与优化 ◆ 识别去重 ◆ 多线程提效 ◆ 片头片尾优化 四.总结 一.引言 视频经常会配套对应的台词或者字幕&#xff0c…