1 基于GPT的自动代码审核
项目地址 3.1k⭐
目前支持多种部署方式,官方推荐为使用 Github Action:
- 添加
OPENAI_API_KEY
到你的 github action 密钥(Setting - Secrets and variables - Actions - New repository secret,输入GPT相关的API密钥) - 创建
.github/workflows/cr.yml
添加以下内容(Actions - New workflow - set up a workflow yourself - yml文件重命名,撰写具体的配置信息):
# cr.yml
name: Code Review
permissions:
contents: read
pull-requests: write
on:
pull_request:
types: [opened, reopened]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: anc95/ChatGPT-CodeReview@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
# optional
LANGUAGE: Chinese
# OPENAI_API_ENDPOINT: https://api.chatanywhere.com.cn/v1 # 支持第三方API
# PROMPT:
2 Git中的垃圾回收机制
Git中的垃圾回收机制包括数据打包、清理垃圾数据和清理过期数据三部分
- 数据打包主要是针对松散的对象文件、pack文件和引用文件进行操作
- 垃圾数据是指没有引用和引用日志指向的数据(不可达对象),通常是之前被reset掉的数据
- 过期数据包括reflog、worktree元数据和rerere元数据
- git的gc机制可以自动触发;底层子命令可以用来执行具体的垃圾回收动作。
常用底层命令:
- pack-refs:用来打包引用文件
- repack:用来打包数据对象
- reflog expire:用来删除超期的日志信息
- prune:用来删除不可达的松散数据对象文件
- worktree prune:用来删除残留的worktree元数据
- rerere gc:用来删除rerere记录的冲突解决元数据
需要注意的是,prune只能删除不可达的松散数据对象文件。如果对象已经被打包到pack文件中,则不能被删除。pack中的不可达对象需要使用repack来删除。参考:Git技术内幕-垃圾回收那些事
3 处理占用较大的项目
- 在一个大型项目中只克隆一个目录,以提升下载速度:sparse clone和sparse checkout通过设置sparse参数和filter参数,可以只下载需要的部分内容
- 将这些目录独立成一个新项目 git subtree split -P 【目录】 -b 【新分支名】
- 浅克隆(shallow clone):git checkout --depth=1 只取最新版本,也可以提交代码、创建分支和标签
其他相关处理技巧:
【GitFAQ-如何拆分大仓库】
【GitFAQ-如何管理大文件】
【GitFAQ-如何删除提交记录中的大文件】