Git历史及标签

本文介绍了如何使用gitlog查看提交记录,并详细解释了其各种参数的作用。此外,还介绍了如何使用git来创建轻量级和附注型标签,以及如何查看这些标签。

查看历史

我们可以通过git log来查看之前的提交信息:

$ git log
commit 47ad04b3b4421b47133c3fd88fa43108c1b2c707
Author: oDevilo <15757166470@163.com>
Date:   Fri Feb 3 15:18:01 2017 +0800

    master

commit c2e62bc5d64ed1d8750e7ed7d75449d12c2e646c
Merge: 35d67ed 6f8f981
Author: oDevilo <15757166470@163.com>
Date:   Fri Feb 3 09:59:37 2017 +0800

    ok

不过,不但参数,我们只能看到每个 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交信息。

git log 命令的参数很多,之里就只说明部分。

选项说明
-p按补丁格式显示每个更新之间的差异
-(n)仅显示最近的 n 条提交
–oneline将信息用一行显示(只显示版本和说明)
–stat显示每次更新的文件修改统计信息
–shortstat只显示 –stat 中最后的行数修改添加移除统计
–graph显示 ASCII 图形表示的分支合并历史
–pretty使用其他格式显示历史提交信息
–since, –after仅显示指定时间之后的提交
–until, –before仅显示指定时间之前的提交
–author仅显示指定作者相关的提交
–committer仅显示指定提交者相关的提交
–grep仅显示含指定关键字的提交
-S仅显示添加或移除了某个关键字的提交
–name-only仅在提交信息后显示已修改的文件清单
–name-status显示新增、修改、删除的文件清单
–abbrev-commit仅显示 SHA-1 的前几个字符
–relative-date使用较短的相对时间显示
$ git log --pretty=format:"%h - %an, %ar : %s"

47ad04b - oDevilo, 24 hours ago : master
c2e62bc - oDevilo, 30 hours ago : ok
6f8f981 - oDevilo, 10 days ago : test
5acd669 - oDevilo, 10 days ago : init
9b95894 - oDevilo, 10 days ago : twoforget
aaaec21 - oDevilo, 3 weeks ago : add
35d67ed - oDevilo, 3 weeks ago : test lo

–pretty=format 可以将信息按照我们的格式来显示,下面列出格式占位符写法及其代表的意义:

选项说明
%H提交对象(commit)的完整哈希字串
%h提交对象的简短哈希字串
%T树对象(tree)的完整哈希字串
%t树对象的简短哈希字串
%P父对象(parent)的完整哈希字串
%p父对象的简短哈希字串
%an作者(author)的名字,指修改者
%ae作者的电子邮件地址
%ad作者修订日期(可以用 –date= 选项定制格式)
%ar作者修订日期,按多久以前的方式显示
%cn提交者(committer)的名字
%ce提交者的电子邮件地址
%cd提交日期
%cr提交日期,按多久以前的方式显示
%s提交说明

打标签

同其他版本控制系统,Git 可以给历史中的某一个提交打上标签。我们一般会用来标记发布结点(v1.0.0)。
Git 使用两种主要类型的标签:轻量标签(lightweight)与附注标签(annotated)。

  • 轻量标签很像一个不会改变的分支 - 它只是一个特定提交的引用。
  • 附注标签是存储在 Git 数据库中的一个完整对象,可以被校验。其中包含打标签者的名字、电子邮件地址、日期时间以及标签信息;并且可以使用 GNU Privacy Guard (GPG)签名与验证。

一、创建标签

如果要创建一个轻量标签可以通过下面方法:

$ git tag v1.1

如果要创建一个附注标签,可以使用下面方法:

$ git tag -a v1.3 -m 'this is a tag'

-a 表示为附注标签,如果没有 -m 那么会调用文本编辑器(如果标签名已经存在,则会提示标签已存在)。

二、查看标签

$ git tag
v1.1
v1.2
v1.3

可以通过 -l 来特定查找标签,如下面只查 v1.2 相关的:

$ git tag -l v1.2*
v1.2

git show 命令可以看到标签信息与对应的提交信息(这里可以比较出轻量标签与附注标签的区别,v1.1 为轻量 v1.3 为附注,附注比轻量多了标签信息):

$ git show v1.1
commit 8bef5ee4fb4b111a8a0160426a4be73491d2b4b5
Author: zhangweize <zhangweize_qtl@sina.cn>
Date:   Mon Aug 29 14:38:16 2016 +0800

    test

diff --git a/1.txt b/1.txt
new file mode 100644
index 0000000..e69de29

$ git show v1.3
tag v1.3
Tagger: oDevilo <15757166470@163.com>
Date:   Sat Feb 4 15:55:41 2017 +0800

this is a tag

commit 8bef5ee4fb4b111a8a0160426a4be73491d2b4b5
Author: zhangweize <zhangweize_qtl@sina.cn>
Date:   Mon Aug 29 14:38:16 2016 +0800

    test

diff --git a/1.txt b/1.txt
new file mode 100644
index 0000000..e69de29
<think> 首先,用户的问题是:“我想查找git提交代码时带上标签的方法 请问git提交代码时如何带上标签”。这基于历史对话和提供的引用。 回顾系统级指令: - 所有行内数学表达式用$...$。 - 独立公式用$$...$$。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 用户还提供了引用:[^1], [^2], [^3]。这些引用是关于Git操作的: - [^1]:Git代码提交并打tag标签的步骤。 - [^2]:使用emoji在commit时添加标签。 - [^3]:Git提交代码的常用命令,包括标签操作。 用户的问题核心是:如何在git提交代码时带上标签。这里的“带上标签”可能指的是在提交时添加标签,但根据Git的术语: - “提交”通常指git commit,用于记录代码更改。 - “标签”通常指git tag,用于标记特定的提交点。 在引用[^2]中,提到使用emoji在commit时打标签,这更像是在提交消息中添加装饰,而不是Git的tag对象。真正的Git tag是引用[^1]和[^3]中描述的git tag命令。 用户说“带上标签”,可能是混淆了commit message中的标签(如emoji)和Git的tag对象。我需要澄清并回答。 我的回答应该: 1. 结构清晰,逐步解决问题。 2. 基于提供的引用。 3. 使用中文。 4. 在末尾生成相关问题。 5. 在引用段落末尾添加引用标识,如[^1]。 回答结构: - 先解释Git标签的含义。 - 区分commit message中的标签Git tag对象。 - 根据引用,提供方法: - 方法1:在commit时使用emoji或消息添加“标签”(即描述性标签)。 - 方法2:提交代码后创建Git tag。 - 提供步骤。 从引用: - [^2]:直接在commit message中使用emoji打标签。例如:git commit -m ":rocket: 添加新功能"。 - [^1]和[^3]:先提交代码,再用git tag创建标签,然后推送标签。 所以,我应该覆盖两种方式: 1. 在提交时添加描述性标签(消息)。 2. 提交后创建tag对象。 最终步骤: - 提交代码:git add, git commit -m "your message"。 - 然后创建标签git tag -a v1.0 -m "description"。 - 推送标签git push origin v1.0。 对于“提交时带上标签”,如果用户意指在commit消息中包含标签信息,则使用[^2]的方法;如果指提交后打tag,则使用[^1]或[^3]。 在回答中,确认用户意图,但由于问题是“带上标签”,我将解释两者。 生成相关问题: - 基于主题,如:如何创建标签、推送标签的好处、emoji的使用等。 回答大纲: 1. 介绍:解释Git标签的概念。 2. 方法一:在commit消息中添加标签(使用emoji或描述)。 3. 方法二:提交后创建Git tag对象。 4. 步骤总结。 5. 生成相关问题。 确保回答真实可靠,基于引用。 最后,添加引用标识:[^1], [^2], [^3]在相关部分。 </think> ### Git提交代码时如何带上标签Git中,“带上标签”通常有两种含义:(1) 在提交消息中添加描述性标签(如emoji或关键字),以提高提交历史的可读性;(2) 提交代码后创建Git标签(tag),用于标记特定版本。基于您的查询和引用内容,我将清晰解释两种方法的实现步骤。Git标签操作必须遵循顺序:先完成代码提交到分支,再创建标签并推送标签到远程仓库[^1][^3]。 #### 方法一:在提交消息中添加描述性标签(推荐用于日常提交) 这种方法直接在`git commit`命令的消息中使用emoji或关键字作为“标签”,使提交历史更易于区分和查找[^2]。例如,添加`:rocket:`表示新功能开发。 1. **添加修改的文件**:使用`git add`暂存待提交的文件。 ```bash git add [file_path] # 例如:git add src/index.js ``` 2. **提交代码并在消息中包含标签**:在`-m`参数中添加emoji或描述性文本。 ```bash git commit -m ":rocket: 添加新功能" # :rocket: 是emoji标签,表示功能开发[^2] ``` 3. **推送到远程分支**: ```bash git push origin [分支名] # 例如:git push origin developer ``` - **优点**:简单快速,适合小型项目或个人开发。 - **注意事项**:这不是Git的正式标签对象,而是提交消息的一部分,主要用于团队协作中的快速识别。 #### 方法二:提交后创建Git标签对象(推荐用于版本发布) 这种方法先提交代码到分支,再使用`git tag`创建正式标签(如`v1.0`),适用于标记重要版本(如发布稳定版)[^1][^3]。 1. **完成代码提交到分支**: - 添加文件:`git add [file_path]` - 提交代码:`git commit -m "修复bug"` - 推送到远程:`git push origin [分支名]` 2. **创建Git标签**:使用`git tag -a`添加带描述的标签。 ```bash git tag -a v1.0 -m "正式版本发布" # -a 指定标签名,-m 添加描述[^3] ``` 3. **推送标签到远程仓库**:标签必须额外推送到远程。 ```bash git push origin v1.0 # 推送单个标签 # 或推送所有本地标签git push origin --tags ``` 4. **验证标签**: - 查看本地标签:`git tag` - 查看远程标签:`git ls-remote --tags`[^3] #### 关键区别与最佳实践 - **何时使用哪种方法**: - 描述性标签(方法一):适合日常提交,快速标注提交类型(如`:bug:`表示修复bug)[^2]。 - Git标签对象(方法二):适合版本控制,如发布`v2.0`,便于回滚或部署[^1][^3]。 - **常见错误**: - 不能在`git commit`中直接创建tag对象:标签必须在提交后单独创建。 - 忘记推送标签:`git push`不会自动推送标签,需单独执行`git push origin <tag_name>`[^1]。 - **完整示例流程**: 1. 切换到分支:`git checkout developer` 2. 添加文件并提交:`git add . && git commit -m "优化性能"` 3. 推送提交:`git push origin developer` 4. 创建标签:`git tag -a v1.1 -m "性能优化版本"` 5. 推送标签:`git push origin v1.1` 通过以上方法,您可以灵活地在提交代码时“带上标签”,提升版本管理效率。如果需要更详细的命令帮助,请参考Git官方文档或在线资源。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值