git分支命名规范:
开发分支:feature-[模块名]-[子模块名/标签]-[姓名首字母小写]
修复TD类分支 fix-[缺陷编号/模块名]-[姓名首字母小写]
git提交规范:1 - 5 - 11 - 4 - 编码阶段 - 9 - 10 - 12 - 11 - 14
git 合并commit规范:commit(所有更改) -> git log -> git rebase -i [commitID(不包含此版本)] -> 最后一次提交的pick改为squash -> 修改commit日志 -> git log(查看结果) -> git push -f
术语解析:feat:feature缩写,新需求开发; fix: bug修复;
查询自己在某段时间的代码行: git log [分支] --author=[作者] --since=2023-03-01 --until=2023-04-17 --pretty=tformat: --numstat . ":(exclude)mock" | awk '{ add += 2; loc += 2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
分支管理
- 列举本地分支 git branch
- 列举远程分支 git branch -r
- 列举本地远程分支 git branch -a
- 新建分支 git checkout -b [newBranch] newBranch: [feature/fix]-[模块名]-[子模块名]-[姓名首字母小写]
- 切换分支 git checkout [branch-name]
- 删除本地分支 git branch -D [branch-name]
- 删除远程分支 git branch -dr [remote/branch]
- 推送未关联的新分支到远程 git push --set-upstream origin [newBranch]
- 设置本地分支追踪远程分支 git push --set-upstream origin [newBranch]
- 重命名本地分支名称 git branch -m [oldName] [newName]
- cherry-pick操作 git cherry-pick
- 查询当前分支的父级分支 git reflog show
- 合并分支片段 git rebase --onto <startBranch/startcommitId> <endBranch/endcommitId> 把otherBranch中从startcommitId到endcommitId的提交片段合并到当分支
代码管理
- 查询文件状态 git status
- 提交代码 git commit -m [message] message:[feat/fix/perf]:[uedc][缺陷编号][版本号][模块名][描述],如:feat:[uedc][2021081300224]【AF8.0.50_新架构】【ui】【邮件附件过滤】代码优化
- 暂存代码 git add .
- 更新代码 git pull
- 推送代码 git push
- 还原代码
(1) git checkout -- [file_name / *] // 未进行git add [file_name]
(2) git reset HEAD . // 修改的文件存入了暂存区
(3) git reset --hard HEAD^ // 回退到上一次提交 git reset --hard [commitid] // 回退到任意一次提交
- 未进行git add [file_name] 操作:(1)
- 修改的文件存入了暂存区 操作:(2) && (1)
- 已经commit之后 操作:(3)
- 修改commit日志 git commit --amend
- 拉取代码到本地 git clone git@...
- 删除未跟踪的文件 git clean -f
- 删除未跟踪的文件及目录 git clean -fd
- 从本地某个分支拉取代码并merge此分支 git pull
- 从远程某个分支拉取代码并merge此分支 git pull origin
- 从本地某个分支merge到当前分支 git merge
- 从远程某个分支merge到当前分支 git merge origin
- 查看某次提交的文件改动列表:git show --stat
- 查看某次提交的文件改动详情:git show
fork仓库操作
关联父级仓库
git clone <fork仓库地址> clone fork仓库到本地
git remote add upstream <要关联的仓库地址> upstream可以是其他别名,关联父级仓库
同步fork仓库最新的改动
下方案例前提条件是当前分支是main分支,所以,案例中也是把父级仓库的main分支merge到当前分支
git fetch upstream 拉取父级仓库的代码,拉取父级所有分支最新的改动
git merge upstream/main 把父级仓库main分支merge代码到本地当前分支
git push origin main 或 git push 推送最新的改动到自己的远程fork仓库
git push时默认仓库默认是自己的origin,如果没有更改默认仓库,此命令等同于git push origin [当前分支]
提交改动并提PR到父级仓库
- 提交自己的代码并将开发分支推送到到fork仓库后
- 直接在平台上选择新建PR
- 源分支选择自己的fork仓库的开发分支,目标分支选择父级仓库的目标分支
- 编辑PR描述,点击提交即可