终端一般 Git命令
增加新功能
///从dev建立特性分支
(dev)$: git checkout -b feature/xxx
///开发
(feature/xxx)$: blabla
(feature/xxx)$: git add xxx
(feature/xxx)$: git commit -m 'commit comment'
///把特性分支合并到dev
(dev)$: git merge feature/xxx --no-ff
修复紧急bug
///从master建立hotfix分支
(master)$: git checkout -b hotfix/xxx
///开发
(hotfix/xxx)$: blabla
(hotfix/xxx)$: git add xxx
(hotfix/xxx)$: git commit -m 'commit comment'
/// 把hotfix分支合并到master,并上线到生产环境
(master)$: git merge hotfix/xxx --no-ff
///把hotfix分支合并到dev,同步代码
(dev)$: git merge hotfix/xxx --no-ff
测试环境代码
///把dev分支合并到release,然后在测试环境拉取并测试
(release)$: git merge dev --no-ff
生产环境上线
///把testing测试好的代码合并到master,运维人员操作
(master)$: git merge testing --no-ff
///给版本命名,打Tag
(master)$: git tag -a v0.1 -m '部署包版本名'
新建分支

创建了Develop分支,如下:

Demo: 创建功能开发分支feature/Harley

效果:

远程检出分支


效果图:

删除分支
删除远程分支

这是删除远程的分支,本地分支还没有删除,需要进行下一步删除本地分支。
删除本地分支

拉取
master
分支的内容是最新的,feature/Harley的分支
版本落后于master,从远程拉取内容合并到feature/Harley的分支
上,如下图步骤:

合并分支
第一种方法

第二种方法

代码回滚
适用于的场景:
- 提交错代码,想放弃刚刚提交的部分;
- 代码发生冲突,处理比较麻烦,为了代码安全,直接回滚到之前干净的代码。
回滚分为本地回滚
和远程回滚
;
本地回滚
,回滚已经提交的代码,但还未推送到远程仓库。


使用模式:
软合并:
保留上第二次提交的修改内容,就等第二次提交的【概述】了。
混合合并:
保留上第二次提交的修改内容,就等第二次提交的【概述】了(与软合并没啥区别)。
强行合并:
清除第二次提交的所有内容,第一次提交的【概述】也没有了,好像刚刚第一次的提交。
效果图:

远程回滚
SourceTree
默认是不提供这种操作的,因为存在风险。所以,回滚远程代码,一定要注意:
①. 想要放弃的代码,是所有开发成员都一致同意的;
②. 想要放弃的代码只是自己的,中间没有别人的提交记录,这可以直接回滚。
③. 这个操作过程中,提醒其他成员不要推送代码。
-
Frist Stemp
SourceTree 开启【允许强制推送】权限
-
Second Stemp
回滚到想提交的位置
-
Third Stemp
强制推送
效果图:

变基

作用:
- 变基到其他分支,不会生成新的提交节点;
- 压缩提交消息;
①变基到其他分支
将Harley 分支内容接到 develop

注意:在这里,先要拉取,再推送
,否则会失败,下面是推送,如下:

打Tag
功能:
- 轻量级的:它其实是一个独立的分支,或者说是一个不可变的分支.指向特定提交对象的引用;
- 带附注的:实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证,电子邮件地址和日期,一般我们都建议使用含附注型的标签,以便保留相关信息。

也可以像下图那样打标签🏷️那样:

Tag 的使用请看这里。
Tag 和 branch 的区别
:
- tag 对应某次 commit, 是一个点,是不可移动的;
- branch 对应一系列 commit,是很多点连成的一根线,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。
所以,两者的区别决定了使用方式,改动代码用 branch ,不改动只查看用 tag。
tag 和 branch 的相互配合使用,有时候起到非常方便的效果,例如 已经发布了 v1.0 v2.0 v3.0 三个版本,这个时候,我突然想不改现有代码的前提下,在 v2.0 的基础上加个新功能,作为 v4.0 发布。就可以 检出 v2.0 的代码作为一个 branch ,然后作为开发分支。
Git 工作流
1⃣️在develop 分支建立 release分支


网友评论