hand_git & DDD

Git

工作区域

在这里插入图片描述

使用流程

  • 一般流程:开始开发之前,需要先git fetch,把最新的内容拉取到本地;然后git merge,把内容合并到当前修改;然后进行开发,完成后执行git add .,将修改添加到暂存区;然后git commit 将修改提交到版本管理;最后git push推送给远程仓库,供其他人拉取使用。

在这里插入图片描述

基本命令

创建本地仓库

# 在当前目录新建一个Git代码库
$ git init

克隆远程仓库

# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url]

文件状态

#查看指定文件状态
git status [filename]

#查看所有文件状态
git status

提交文件

  • 已提交的文件也存在于暂存区中
# 暂存区操作
git add .                 	# 添加工作区中所有untracked或updated文件到暂存区,“.”代表全部
git rm --cached -r .		# 递归移除所有暂存区的文件
git rm -f -r .				# 递归删除所有暂存区的文件(连同工作区中文件的一块删除)
git restore .				# 根据暂存区中的数据恢复工作区中被删除或被修改的tracked文件
git restore --staged .		# 首先保证工作区数据不变,然后使暂存区中的数据和本地仓库中的数据一致。
# 版本库操作
git pull					# 拉取远程仓库代码到工作区(pull = fetch + merge)
git fetch					# 拉取远程仓库代码到本地仓库
git diff					# 比较代码
git commit -m "消息内容"   	# 提交暂存区中的内容到本地仓库 -m 提交信息

git revert [branch]			# 撤销上一个commit的内容,但不会删除之前的commit记录,反而是生成新的记录
git revert [commitId]		# 指定commitId撤销commit,同样不会删除以前的commit记录

git stash					# 将工作区和暂存区的内容 隐藏到堆栈缓存(stash 只会操作被git追踪的文件)
git stash save "xxx"		# 将工作区和暂存区的内容 隐藏到堆栈缓存,并添加注释
git stash pop				# 将堆栈中最后隐藏的记录pop出来,并在堆中删除该记录
git stash pop stash@{0}		# 指定要pop的记录,pop后删除
git stash apply				# 将堆栈中最后隐藏的记录拿出来,但不会在堆中删除该记录
git stash apply stash@{0}	# 指定要取出的记录,取出后不删除
git stash drop stash@{0}	# 删除某个缓存
git stash clear				# 缓存全清
git stash show stash@{0} -p	# 显示与缓存的差异,-p 表示查看详情

git stash list				# 查看隐藏内容列表

git log [branchName]		# 查看分支的提交记录
git reflog					# 查看从clone仓库开始,用户所有在本地库中的操作
git reset --hard HEAD~1		# 回退到上一个版本,工作区、暂存区、本地仓库一起回退
git reset --hard HEAD~n		# 回退到上n个版本 
git reset --hard commitId	# 回退到某个reflogId 版本,可用来恢复reset
git reset --soft HEAD^		# 回退到上一个版本,工作区和暂存区不变,本地仓库回退
git reset --mixed HEAD^		# 回退到上一个版本,工作区不变,暂存区和本地仓库回退
git reset --merge head^
git reset --keep head~1

提交忽略

  • 使用.gitignore文件配置
#为注释
*.txt        #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt     #但lib.txt除外
/temp        #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/       #忽略build/目录下的所有文件
doc/*.txt    #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/**/*.p	 #**表示嵌套路径,即doc下的多层路径。

免密码登录

  • 绑定用户名和邮箱
git config --global user.name 'xxx' //设置用户名
git config --global user.email 'xxx@gmail.com' //设置邮箱
  • 生成公钥
# 进入 C:\Users\Administrator\.ssh 目录
# 生成公钥
ssh-keygen			# 普通版
ssh-keygen -t rsa 	# 加密版
ssh-keygen -t rsa -b 2048 -C "<comment>" # 2048-bit RSA版

分支操作

分支命令
# 列出所有本地分支
git branch

# 列出所有远程分支
git branch -r

# 新建一个分支,但依然停留在当前分支
git branch [branch-name]

# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 在过去的某个版本切出一个分支
git checkout commitID

# 合并指定分支到当前分支,将指定分支的提交揉成一个然后放在当前分支最新提交之后
git merge [branch]
# 放弃当前合并操作
git merge --abort
# 以指定分支为基础,将当前分支新加的commit加在指定分支上,和merge一样是用来合并的
git rebase [branch]
# 删除分支
git branch -d [branch-name]

# 删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
# 提交新分支到远程仓库
git push --set-upstream origin [branch-name]
分支合并
  • git最强大的功能就是分支。git在提交时,提交的其实是个提交对象,而这个对象包含着指向父提交对象的指针。而实际分支的原理,就是个可变指针,指向某个提交对象,在操作分支时,其实就是操作的指针。
  • 分支合并后,会形成一个新的提交,指向之前的两个合并分支。有时候合并并不能由git自动完成,会存在冲突
    解决:合并分支的时候,如果两个分支修改了同一部分内容,那可能就会有冲突。需要我们自己手动解决冲突
    后,再提交。
分支切换
  • 对于所有分支而言,工作区和暂存区是每个分支共用的。
  • 只有将工作区和暂存区的修改在某一分支上提交到版本库中,这些修改的归属分支才会确定。
  • 当前分支上的修改和将要切换分支的最新commit 冲突 时,git会拒绝切换分支命令,此时的解决方法有 commit修改 和 stash 修改两种。

规范要求

分支命名规范

  • master:主分支,可用稳定的发布版本
  • develop:开发主分支,最新的代码
  • feature-xxx:功能开发分支
  • bugfix-xxx:未发布版本的bug修复分支
  • release-xxx:预发布分支
  • hotfix-xxx:已发布版本的bug修复分支

提交规范

  • [IMP] 提升改善正在开发或者已经实现的功能

  • [FIX] 修正BUG

  • [REF] 重构一个功能,对功能重写

  • [ADD] 添加实现新功能

  • [REM] 删除不需要的文件

.gitignore

  • 忽略git commit 的文件,但是不能忽略 git pull 的文件

DDD

  • Domain Driven Design 领域驱动设计

分层结构

  • 分层架构图
img
  • 项目结构图

在这里插入图片描述

API层

  • 用户接口层(api):用户接口层,向外提供服务

在这里插入图片描述

  • controller:提供资源服务,XxxController.java
  • dto:数据传输对象,XxxDTO.java,对于一些复杂页面需要多个实体组合时,可使用DTO对象来传输数据。

APP层

  • 应用层(app):应用层,定义系统的业务功能,并指挥领域层中的领域对象实现这些功能,负责用例流程调度,事务控制。

在这里插入图片描述

  • service:应用服务,XxxService.java,应用服务里进行事务控制,流程调度
  • service.impl:应用服务实现,XxxServiceImpl.java
  • assembler:DTO组装器,XxxAssembler.java,复杂DTO的组装,简单的直接使用Entity即可

Domain层

  • 领域层(domain):领域层,包含领域对象和领域服务,专注核心业务。

在这里插入图片描述

  • entity:实体对象,与表做映射,具备一些简单的自治的业务方法
  • repository:资源库接口,XxxRepository.java,提供数据资源的操作方法,如数据库增删改查、Redis增删改查等,查询操作建议写到 repository 内。
  • service:领域服务,命名一般按提供的业务功能命名,通常用于封装一个领域内的复杂业务逻辑,简单的业务逻辑在app 层完成即可,不需要领域层。
  • vo:值对象,XxxVO.java,领域内用到的数据封装,对于一些没有实体对象的数据对象但又在领域中用到,使用值对象封装

Infra层

  • 基础设施层(infra):基础设施层,提供数据持久化、防腐层实现、第三方库、消息等,为整个业务系统提供基础的服务。

在这里插入图片描述

  • constant:常量
  • mapper:Mapper接口,XxxMapper.java
  • repository.impl:资源库实现,XxxRepositoryImpl.java,业务一定不要侵入到这里
  • util:工具

补充

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值