【第五节】Git 提交历史和标签

目录

[一、Git 提交历史查看](#一、Git 提交历史查看)

[1.1 基本命令](#1.1 基本命令)

[1.2 简洁版本](#1.2 简洁版本)

[1.3 拓扑图选项](#1.3 拓扑图选项)

[1.4 逆向显示](#1.4 逆向显示)

[1.5 指定用户提交](#1.5 指定用户提交)

[1.6 指定日期范围](#1.6 指定日期范围)

[二、 Git 标签](#二、 Git 标签)

[2.1 标签与分支的区别](#2.1 标签与分支的区别)

[2.2 标签的存在意义](#2.2 标签的存在意义)

[2.3 标签的增删查](#2.3 标签的增删查)

[2.4 不同类型标签的差别](#2.4 不同类型标签的差别)

[2.5 标签的注意事项](#2.5 标签的注意事项)


一、Git 提交历史查看

1.1 基本命令

在使用 Git 进行多次提交或克隆项目后,可以通过 `git log` 命令查看提交历史。以下是使用 `git log` 命令列出的提交记录示例:

bash 复制代码
$ git log
commit d5e9fc2c811e0ca2b2d28506ef7dc14171a207d9 (HEAD -> master)
Merge: c68142b 7774248
Author: runoob <test@runoob.com>
Date:   Fri May 3 15:55:58 2019 +0800

    Merge branch 'change_site'

commit c68142b562c260c3071754623b08e2657b4c6d5b
Author: runoob <test@runoob.com>
Date:   Fri May 3 15:52:12 2019 +0800

    修改代码

commit 777424832e714cf65d3be79b50a4717aea51ab69 (change_site)
Author: runoob <test@runoob.com>
Date:   Fri May 3 15:49:26 2019 +0800

    changed the runoob.php

commit c1501a244676ff55e7cccac1ecac0e18cbf6cb00
Author: runoob <test@runoob.com>
Date:   Fri May 3 15:35:32 2019 +0800

1.2 简洁版本

使用 `--oneline` 选项可以查看更简洁的提交历史:

bash 复制代码
$ git log --oneline
d5e9fc2 (HEAD -> master) Merge branch 'change_site'
c68142b 修改代码
7774248 (change_site) changed the runoob.php
c1501a2 removed test.txt、add runoob.php
3e92c19 add test.txt
3b58100 第一次版本提交

1.3 拓扑图选项

通过 `--graph` 选项,可以查看提交历史的分支和合并情况:

bash 复制代码
$ git log --graph --oneline
*   d5e9fc2 (HEAD -> master) Merge branch 'change_site'
|\  
| * 7774248 (change_site) changed the runoob.php
* | c68142b 修改代码
|/  
* c1501a2 removed test.txt、add runoob.php
* 3e92c19 add test.txt
* 3b58100 第一次版本提交

1.4 逆向显示

使用 `--reverse` 参数可以逆向显示所有日志:

bash 复制代码
$ git log --reverse --oneline
3b58100 第一次版本提交
3e92c19 add test.txt
c1501a2 removed test.txt、add runoob.php
7774248 (change_site) changed the runoob.php
c68142b 修改代码
d5e9fc2 (HEAD -> master) Merge branch 'change_site'

1.5 指定用户提交

通过 `--author` 选项可以查找指定用户的提交记录。例如,查找 Git 源码中 Linus 的提交:

bash 复制代码
$ git log --author=Linus --oneline -5
81b50f3 Move 'builtin-*' into a 'builtin/' subdirectory
3bb7256 make "index-pack" a built-in
377d027 make "git pack-redundant" a built-in
b532581 make "git unpack-file" a built-in
112dd51 make "mktag" a built-in

1.6 指定日期范围

使用 `--since` 和 `--before` 选项可以指定日期范围。例如,查看三周前且在 2010 年 4 月 18 日之后的提交:

bash 复制代码
$ git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
5469e2d Git 1.7.1-rc2
d43427d Documentation/remote-helpers: Fix typos and improve language
272a36b Fixup: Second argument may be any arbitrary string
b6c8d2d Documentation/remote-helpers: Add invocation section
5ce4f4e Documentation/urls: Rewrite to accomodate transport::address
00b84e9 Documentation/remote-helpers: Rewrite description
03aa87e Documentation: Describe other situations where -z affects git diff
77bc694 rebase-interactive: silence warning when no commits rewritten
636db2c t3301: add tests to use --format="%N"

二、 Git 标签

2.1 标签与分支的区别

- **分支**: 分支是动态的,指向最新的提交,常用于开发过程中的功能迭代或修复。
**- **标签**:**标签是静态的,指向某个特定的提交,通常用于标记重要的版本或里程碑。

2.2 标签的存在意义

标签用于标记项目中的重要版本或里程碑,例如发布版本(如 v1.0.0)或重大更新。它可以帮助开发者和用户快速定位到特定的历史状态。

2.3 标签的增删查

#### 1. 创建标签
- **轻量标签**:

bash 复制代码
  git tag <tag_name>

- **附注标签**:

bash 复制代码
  git tag -a <tag_name> -m "标签描述"

#### 2. 查看标签
- 查看所有标签:

bash 复制代码
  git tag

- 查看标签详细信息:

bash 复制代码
  git show <tag_name>

#### 3. 删除标签
- 删除本地标签:

bash 复制代码
  git tag -d <tag_name>

- 删除远程标签:

bash 复制代码
  git push origin --delete <tag_name>

#### 4. 推送标签
- 推送单个标签:

bash 复制代码
  git push origin <tag_name>

- 推送所有标签:

bash 复制代码
  git push origin --tags

**注意:**在 Git 中,标签(Tag)一旦创建,默认是不可修改的。这是因为标签通常用于标记项目的特定版本或里程碑,修改标签可能会导致版本管理的混乱。不过,如果确实需要修改标签,一般都是先删除原有的标签,再创建新的,不过一般不建议。

2.4 不同类型标签的差别

- **轻量标签**: 仅是一个提交的引用,不包含额外信息。
**- **附注标签**:**包含标签名、标签创建者、日期、描述等信息,适合用于正式发布版本。

通过标签和分支的合理使用,可以更好地管理项目的版本历史和开发流程。

2.5 标签的注意事项

  • 标签的不可变性:Git 的设计初衷是标签是不可变的,因此修改标签可能会导致版本管理的混乱。建议在正式发布版本时,尽量避免修改标签。

  • 轻量标签无法修改描述:轻量标签(Lightweight Tag)只是一个提交的引用,没有描述信息,因此无法修改描述。如果需要修改描述,必须将其转换为附注标签。

  • 团队协作的影响:如果标签已经共享给团队成员或发布到公共仓库,修改标签可能会导致其他开发者的工作受到影响。建议在修改标签前,与团队沟通并确认影响。

相关推荐
爱敲代码的边芙6 小时前
Linux:Git
git
攻城狮7号6 小时前
【第三节】Git 基本操作指南
git
litGrey6 小时前
【规范七】Git管理规范
git·代码规范
止语---13 小时前
Gitlab ci/cd
git·ci/cd·gitlab
毒丐15 小时前
git使用教程(超详细)-透彻理解git
git
唐可盐1 天前
Ubuntu安装Gitlab详细图文教程
git·gitlab·github
7yewh1 天前
嵌入式 linux Git常用命令 抽补丁 打补丁
linux·arm开发·git·嵌入式硬件·ubuntu·嵌入式·嵌入式软件
dengzhouit1 天前
VScode配置GIT
ide·git·vscode