1. 分支
git中分支的概念和svn及cvs等vcs系统总的概念是一样的,但实现机制不同,git中的分支更轻量,创建和删除分支的开销极小。
使用分支的一个典型场景:
1)你需要做一个新功能的开发
2)你创建了一个分支,在这个分支上进行新功能的开发
此时你接到上线系统有一个需求紧急修复的问题,你的做法是:
1)切换到线上系统对于的分支。
2)为修改紧急问题新建一个分支(例如:issue-191206)
3)在新建的分支中修改问题,测试通过后,合并这个修改到线上分支
4)切换回你的新功能开发分支继续新功能的开发。
1.1 分支创建
git branch 分支名
该命令用来创建分支
git checkout -b 分支名
创建分支完成后,同时切换到刚创建的分支上
1.2 查看分支
git branch
绿色的小信号表示当前所在的分支。
1.3 合并
1)首先切换到需要合并到的目标分支,例如A分支合并到B分支,则B分支为合并到的目标分支
2)执行合并命令
#这里的分支名是需要合并的分支名,如上例中提到的A分支
git merge 分支名
1.4 切换分支
git checkout 分支名
1.5 删除分支
git branch -d 分支名
2. tag
tag代表了当前的提交节点,是当前节点的一个标记记录,tag的名字不能重复,tag也不可以修改,不能在一个tag上继续提交。 branch(分支)是代表的一个分支,可以分支上继续提交。
Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)。
轻量标签: 轻量标签很像一个不会改变的分支——它只是某个特定提交的引用
附注标签是存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息
2.1 附注标签
$ git tag -a v1.4 -m "my version 1.4"
2.2 轻量级标签
$ git tag v1.4-lw
2.3 列出已有标签
$ git tag
2.4 查看签信息和与之对应的提交信息
$ git show v1.4
2.5 如何在后期打标签
有时需要通过前面的某次提交来打一个标签(比如忘记了及时打标签,后面才想起来)可以使用如下命令
## 查看提交记录
$ git log --pretty=oneline
ee07767 (HEAD -> master, tag: v1.0.0) modified f ff
19d7f5f modified
c90073d Merge branch 'dev' into master
cccca29 add f file
bf11147 add e file
## 通过指定的提交hash值来打标签
$ git tag -a v1.2 c90073d
2.6 通过指定的标签创建分支
$ git branch hotfix v1.0.0
注:hotfix 为分支名s v1.0.0 为标签名
2.7 删除标签
$ git tag -d v1.0.0
Deleted tag 'v1.0.0' (was ee07767)
2.8 共享标签
git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上。 这个过程就像共享远程分支一样——你可以运行 git push origin <tagname>
$ git push origin v1.5
Counting objects: 14, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (14/14), 2.05 KiB | 0 bytes/s, done.
Total 14 (delta 3), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
* [new tag] v1.5 -> v1.5