首先注意有git flow, github flow

其中git flow更加复杂

设置

可以设置不能在主分支直接提交

quick start

Git分支模型(master/hotfix/develop/feature/release)
在这里插入图片描述
github flow
在这里插入图片描述

  • Create a new Branch
  • Make changes and add Commits
  • Open a Pull Request
  • Review
  • Deploy
  • Merge

workflow

  • remote main,远端
  • local main,本地
  • disk main, 实际源文件

1 local 建立新的分支

git checkout -b dev

实际源文件不了解branch信息
2 修改代码
disk修改了代码,但local git还不了解

# 查看disk和local的变化
git diff

3 flow

# disk的修改放到暂存区
git add <changed-file>
# 暂存区到local git里
git commit -am "message"
# local git到remote git,此时GitHub里增加了相应的dev分支
git push origin dev
# 此时可能发现main branch已经多了别人别的commit。就要测试我们dev分支里的改动是否work

4 如果遇到如下情况
在这里插入图片描述

# remote git同步到local git和disk,如果此时main分支已经有了新的改动,怎么办?
git checkout main  # checkout 新分支之前需要把之前先commit
git pull -origin main # 新的主分支,同步到local和disk
git checkout dev # 回到新的dev,此时没有远端main的变化
git rebase main # 自己的修改先不管,先把main拿过来,尝试把dev变化同步, rebase的功能提取我们在A分支上的改动,然后应用在B分支的代码上
# conflict的话,则手动修改
git push -f origin dev # 有rebase之后,需要force push
# pull request
# suqash and merge

# 之后可以github手动删掉dev分支,然后git命令删掉本地dev分支
git checkout main # 想删掉dev之前需要处在其他分支
git branch -D dev
git pull origin main # 最新的更新拉到本地

提一个PR,如图dev分支到master分支
在这里插入图片描述
提起之后,注意其名字后续就会成为新的“commit message",如这里默认的Dev # 1
可以看到该pr包含dev分支的两个commit
在这里插入图片描述
PR页面下面就有merge的功能,这里选择squash and merge
在这里插入图片描述
还有一次修改commit message的机会。Dev #1
在这里插入图片描述
最后可以删掉remote的分支
在这里插入图片描述

恢复

git怎样恢复删除的分支

  • 1利用“git reflog”命令找到被删除分支的最后一次提交记录的commitSHA值;
  • 2利用“git checkout -b dev 获取到的commitSHA值”命令恢复删除的分支

在这里插入图片描述

  • 8b05ac7

在这里插入图片描述
确实,文件回来了

冲突

git fetch 
git rebase origin/v1.0

git add .  
git stash
git push -f  
git stash pop

git提交规范

  • 上 git commit template
  • 前端常用的,安装Commitizen

推荐commit message格式

<type>(<scope>): <subject>
<commit类型>(影响范围): 具体描述
  • 有项目管理工具的话,加上提单号也行
type

『feat』: 新增功能
『fix』: 修复 bug
『docs』: 仅仅修改了文档,比如 README, CHANGELOG等等
『test』: 增加/修改测试用例,包括单元测试、集成测试等
『style』: 修改了空行、缩进格式、引用包排序等等(不改变代码逻辑)
『perf』: 优化相关内容,比如提升性能、体验、算法等
『refactor』: 代码重构,「没有新功能或者bug修复」
『chore』: 改变构建流程、或者增加依赖库、工具等
『revert』: 回滚到上一个版本
『merge』: 代码合并

scope (optional)

scope用于说明 commit 影响的范围,根据不同项目有不同层次描述。若没有特殊规定,也可以描述影响的哪些功能等。

subject

subject是commit目的的简短描述,不超过50/80个字符,一般git提交的时候会有颜色提示。

开源代码,统一英文,可以再附加对应的issue地址,结尾不加标点符号

参考

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐