Git常用命令

记录工作中常用的Git命令。

tag

1
2
3
4
git tag x.x.x
git push origin x.x.x
# push所有tag
git push origin --tags
1
2
# 批量删除tag
git tag -l | awk '/REG/' | xargs git tag -d
1
2
3
# 删除本地&远程tag
git tag -d ${tag}
git push origin :refs/tags/${tag}

fetch

1
2
# 从orgin拉取remote_branch到本地作为local_branch
git fetch origin remote_branch:local_branch

push

1
2
3
git push origin local_branch:remote_branch
# 删除远程分支remote_branch
git push origin --delete remote_branch

log

1
2
3
git log --graph --decorate
git log --graph --decorete --oneline
git log --graph --decorate --oneline --simplify-by-decoration --all

rebase1 2

  rebase是找到当前分支与指定分支的公共祖先,然后将当前分支上的新提交重播到指定分支上。

  • 合并commit记录
1
2
3
# -i: --interactive
# (startpoint, endpoint]
git rebase -i [startpoint] [endpoint] 
  • 合并某一段commit粘贴到另一个分支上
1
2
3
4
# (startpoint, endpoint]
git rebase [startpoint] [endpoint] --onto [branchname]
git checkout [branchname]
git reset --hard [commit]

注意

  • 不能将master分支rebase到其他分支上。
  • 不要在公共分支上rebase。
  • 解决冲突,git add . -> git rebase –continue
  • 合并代码的时候按照最新分支优先合并为原则

branch规范3

  当一组feature开发完成,首先合并到develop分支。进入提测时,创建release分支。如果测试过程中需修复bug,则直接在release分支修复并提交。当测试完成后,合并release分支到master和develop分支,此时master分支为最新代码,用作上线。

  • master: 主分支,用于部署生产环境的分支

  master分支一般由develop以及hotfix分支合并,任何时候都不能直接修改代码,确保master分支稳定性。

  • devlop: 开发分支,始终保持最新完成以及bug修复后的代码

  一般开发新功能时,feature分支都是基于develop分支下创建的。

  • feature: 特性分支,开发新功能时,以develop为基础创建feature分支

  feature分支命名规则feature/newfeature。

  • release: 预上线分支

  发布提测前,会以release分支代码为基准提测。

  • bugfix: bug修复分支

  从develop创建。

  • hotfix: 热修复分支

  线上出现紧急问题,需要及时修复时,以master分支为基线,创建hotfix分支。修复完成后需要合并到master分支和develop分支。hotfix分支命名规则和feature分支相同。

commit规范

  commit风格因人而异,但是规范会让commit log具有更高的可读性。

1
2
3
4
5
<type>(<scope>): <subject>

<body>

<footer>

type

  • feat: 新增feature(功能、特性)。

  • fix: 修复bug。

  • perf: 优化代码,以提高性能(在不影响代码内部行为的前提下,对程序性能进行优化)。

  • refactor: 代码重构(在不影响代码内部行为、功能下的代码修改,也没有修复bug)。

  • docs: 修改了文档,如README、CHANGELOG、CONTRIBUTE等。

  • style: 修改代码格式,如空格、缩进、逗号等,不改变代码逻辑。

  • test: 新增、修改测试用例。

  • build: 影响项目构建或依赖项修改。

  • revert: 回滚到上一个提交版本。

  • ci: 修改持续集成相关文件。

  • chore: 改变构建流程、或者增加依赖库、工具等。

  • release: 发布新版本。

  • workflow: 修改工作流相关文件。

  • sync: 同步主线或分支的bug。

  • log: 修改日志。

scope

  声明commit影响的范围,如route,component,utils,build。

subject

  commit的概述,描述主要变更内容,尽量简短(50字符以内)。

body

  commit的详细说明,可使用多行。

+ 表示新增

- 表示删除

* 表示修改

  commit的备注,可以是ChangeLog、修复的bug的链接。

Licensed under CC BY-NC-SA 4.0