- 一般流程:开始开发之前,需要先git fetch,把最新的内容拉取到本地;然后git merge,把内容合并到当前修改;然后进行开发,完成后执行git add .,将修改添加到暂存区;然后git commit 将修改提交到版本管理;最后git push推送给远程仓库,供其他人拉取使用。
# 在当前目录新建一个Git代码库 $ git init克隆远程仓库
# 克隆一个项目和它的整个代码历史(版本信息) $ git clone [url]文件状态
#查看指定文件状态 git status [filename] #查看所有文件状态 git status提交文件
git add . # 添加所有文件到暂存区,“.”代表全部 git commit -m "消息内容" # 提交暂存区中的内容到本地仓库 -m 提交信息提交忽略
- 使用.gitignore文件配置
#为注释 *.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中! !lib.txt #但lib.txt除外 /temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp build/ #忽略build/目录下的所有文件 doc*.p #**表示嵌套路径,即doc下的多层路径。免密码登录
- 绑定用户名和邮箱
git config --global user.name 'xxx' //设置用户名 git config --global user.email 'xxx@gmail.com' //设置邮箱
- 生成公钥
# 进入 C:UsersAdministrator.ssh 目录 # 生成公钥 ssh-keygen # 普通版 ssh-keygen -t rsa # 加密版 ssh-keygen -t rsa -b 2048 -C "分支操作" # 2048-bit RSA版
- git最强大的功能就是分支。git在提交时,提交的其实是个提交对象,而这个对象包含着指向父提交对象的指针。而实际分支的原理,就是个可变指针,指向某个提交对象,在操作分支时,其实就是操作的指针。
- 分支合并后,会形成一个新的提交,指向之前的两个合并分支。有时候合并并不能由git自动完成,会存在冲突
解决:合并分支的时候,如果两个分支修改了同一部分内容,那可能就会有冲突。需要我们自己手动解决冲突
后,再提交。
# 列出所有本地分支 git branch # 列出所有远程分支 git branch -r # 新建一个分支,但依然停留在当前分支 git branch [branch-name] # 新建一个分支,并切换到该分支 git checkout -b [branch] # 合并指定分支到当前分支 $ git merge [branch] # 删除分支 $ git branch -d [branch-name] # 删除远程分支 $ git push origin --delete [branch-name] $ git branch -dr [remote/branch]规范要求 分支命名规范
- master:主分支,可用稳定的发布版本
- develop:开发主分支,最新的代码
- feature-xxx:功能开发分支
- bugfix-xxx:未发布版本的bug修复分支
- release-xxx:预发布分支
- hotfix-xxx:已发布版本的bug修复分支
-
[IMP] 提升改善正在开发或者已经实现的功能
-
[FIX] 修正BUG
-
[REF] 重构一个功能,对功能重写
-
[ADD] 添加实现新功能
-
[REM] 删除不需要的文件
- Domain Driven Design 领域驱动设计
- 分层架构图
- 项目结构图
- 用户接口层(api):用户接口层,向外提供服务
- controller:提供资源服务,XxxController.java
- dto:数据传输对象,XxxDTO.java,对于一些复杂页面需要多个实体组合时,可使用DTO对象来传输数据。
- 应用层(app):应用层,定义系统的业务功能,并指挥领域层中的领域对象实现这些功能,负责用例流程调度,事务控制。
- service:应用服务,XxxService.java,应用服务里进行事务控制,流程调度
- service.impl:应用服务实现,XxxServiceImpl.java
- assembler:DTO组装器,XxxAssembler.java,复杂DTO的组装,简单的直接使用Entity即可
- 领域层(domain):领域层,包含领域对象和领域服务,专注核心业务。
- entity:实体对象,与表做映射,具备一些简单的自治的业务方法
- repository:资源库接口,XxxRepository.java,提供数据资源的操作方法,如数据库增删改查、Redis增删改查等,查询操作建议写到 repository 内。
- service:领域服务,命名一般按提供的业务功能命名,通常用于封装一个领域内的复杂业务逻辑,简单的业务逻辑在app 层完成即可,不需要领域层。
- vo:值对象,XxxVO.java,领域内用到的数据封装,对于一些没有实体对象的数据对象但又在领域中用到,使用值对象封装
- 基础设施层(infra):基础设施层,提供数据持久化、防腐层实现、第三方库、消息等,为整个业务系统提供基础的服务。
- constant:常量
- mapper:Mapper接口,XxxMapper.java
- repository.impl:资源库实现,XxxRepositoryImpl.java,业务一定不要侵入到这里
- util:工具



