09 - 漏提交与打tag
“ 提交漏文件、发布release版本怎么搞?——编程三分钟”
恭喜你!!当你学到这一篇的时候,可以非常有底气的说自己是一个熟悉Git的使用和底层原理的Git高手了!开发协作也完全没有了问题。了解了各个步骤操作的后果再也不担心使用不成熟的可视化工具造成的可怕后果了。
本篇和下一篇给大家带来Git的常用技巧,让你更加的得心应手。让我们开始吧!
漏提交
有时候会碰到我们已经commit了但是又漏掉部分属于这个功能的文件没有一起提交,如果我们想把这些文件和刚刚的commit
合并在一起,这种时候应该怎么做呢?
上图含义:
- git log查看最后一次提交日志,其中一个被修改文件叫
time.txt
-
git status查看到暂存区有两个新文件,他们是lose_file.txt和test_amend.txt
-
使用
git commit --amend --no-edit
合并到上一个提交里,如果不加--no-edit
参数的话,会提示你来修改commit提示信息(这个命令也可以用在重复编辑commit message
)。 -
git log查看日志,合并提交成功!注意commit id发生了变化,但是其实只看得到一个提交,此处只是为了便于系统识别和记录恢复。
打tag
打过游戏的朋友都知道存档的概念,标签就是一个类似于存档的东西,他会把当前的提交位置存档,然后用版本号来命名这个存档,常常用于测试和发布版本。可以增加与测试小姐姐接触的机会,何乐而不为呢?
创建一个tag
我们只需要切换到想打标签的分支,然后直接打就可以了。我们来试试~
切换到想打tag
的分支
- 创建名为
release_v1.0
带有信息release v1.0
的tag
-
创建的不带有
tag
的提交信息的release_v1.1
-
我们一般把
tag
名以版本号来命名,比如:release_v1.0 这样。
``
git tag
查看tag列表,可以看到我们刚刚打的两个tag-
git push --tags推送本地全部tag到远程
当然了!也可以推送单个tag
删除操作也非常简单,我们来删除一个tag试试
- 本地删除名为
release_v1.0
的tag
-
远程删除名为
release_v1.0
的tag
给历史提交打tag
先看看当前的log
比方说要对[*]update time to 18:51
这次提交打标签,它对应的commit id是856a740
,只需要敲入命令:
成功打上,这又学了git log的新参数--abbrev-commit,表示只展示前半部分commit id,比较简洁。
小结
1. git log的新参数
只展示文件名和状态(增删改),不展示详细提交说明
git log --name-status
把历史记录用一行显示
git log --pretty=oneline -1
只展示前半部分commit id
git log --abbrev-commit
2. git commit --amend 加--no-edit参数,代表不编辑commit message
的同时合并当前修改到最后一个commit
git commit --amend --no-edit
- 标签操作
git tag # 显示已存在的tag
git tag -a v2.0 -m 'xxx' # 增加v2.0的taggit show v2.0
# 显示v2.0的日志及详细内容git log v2.0 # 显示v2.0的日志
git push --tags # 把所有tag推送到远程仓库
git tag -d tag_name # 本地删除名为tag_name的tag
# 远程删除名为tag_name的tag
git push origin :refs/tags/tag_name
评论