检查日志及版本
git log
git log
:检查版本库日志,每一条形如下;按Q可退出
commit <commit id> (HEAD->master)
Author: <name> <email>
Date: <time>
<message>
commit <commit id>
Author: <name> <email>
Date: <time>
<message>
git log --pretty=oneline
省略作者及日期,更简洁
<commit id> <message>
git log --pretty=oneline --abbrev-commit
仅使用commit id
的前7位,可读性更好
版本号
<commit id>
叫做版本号,是Git为各个时间点里提交 (commit)文件集合的不同版本建立的快照标签,一个<commit id>
代表了那时提交的一个/多个文件 (和原有未更改文件)形成的新文件群 (类似于集体照)HEAD
代表最近的一次 (最新的)版本号,类似地
HEAD^
代表上1个版本HEAD^^
代表上2个版本HEAD~<n>
代表上n个版本
标签 (tag)
- 版本号又臭又长,而且不具备可理解性
- 与每个版本号一一对应的有意义、可理解的标记
- 标签是和每个版本 (commit)一一对应的;也即,如果一个版本同时出现在了多个分支中,那么所有分支中的该版本都会获得该标签
创建标签
git tag <tagname>
:为当前版本创建标签git tag <taganame> <commit id>
:为特定版本创建标签
commit id
可通过前述的git log
查询,加上--abbrev-commit
只显示前7位,更简洁
git tag -a <tagname> -m <message>
:为标签加上文字注释
查看标签及版本信息
git tag
:列举出所有标签git show <tagname>
:详细注明标签对应版本的信息
推送标签到远程仓库
git push origin <tagname>
:推送特定标签到远程仓库git push origin --tags
:一次性将所有本地的标签推送到远程仓库
删除标签
git tag -d <tagname>
:删除本地的特定标签- 删除远程仓库里的某标签
- 先删除本地的该标签:同上
git push origin :refs/tags/<tagname>
:从远程仓库删除该标签
版本回退与撤销回退
版本回退
git log
:查看当前是哪个版本 (HEAD
在哪里)git reset --hard <commit id>
:退回<commit id>
指代的版本
$ git reset --hard HEAD^
HEAD is now at ca47c66 added Gittest2.md
- 以
git log
确认当前HEAD
所在的版本 - 此时本地文件系统中存在的相应文件已回到了原来的版本
撤销回退
- 若想要回到回撤前的版本,需要回撤前版本的
<commit id>
git reflog
:可查看该仓库中提交版本的所有历史以及提交过的所有版本 (包括既往回撤过的)- 在其中找到欲撤销回退的“未来”版本号,再使用一次
git reset --hard <commit id>
即可