目录
[一、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)只是一个提交的引用,没有描述信息,因此无法修改描述。如果需要修改描述,必须将其转换为附注标签。
-
团队协作的影响:如果标签已经共享给团队成员或发布到公共仓库,修改标签可能会导致其他开发者的工作受到影响。建议在修改标签前,与团队沟通并确认影响。