git 扩展命令
Git LFS 大文件存储
Section titled “Git LFS 大文件存储”Git LFS 原理
Section titled “Git LFS 原理”Git LFS通过懒惰地 (lazily) 下载大文件的相关版本来减少大文件在仓库中的影响。具体来说,大文件是在checkout的过程中下载的,而不是clone或fetch过程中下载的。Git LFS通过将仓库中的大文件替换为小于 1 KB 的指针文件来做到这一点。在正常使用期间,我们不会看到这些指针文件,因为它们是由Git LFS自动处理的:- 当我们执行
git add命令时,Git LFS用一个指针替换实际内容,并将实际内容存储在本地 LFS 缓存中 (本地缓存位于仓库的.git/lfs/objects路径下)。 git push时新增的commit所引用的所有大文件都会从本地传输到远程仓库的远程存储。- 当我们
checkout一个包含Git LFS指针的 commit 时 (pull包含了checkout命令),指针文件将替换为本地Git LFS缓存中的文件,或者从远端Git LFS存储区下载。
- 当我们执行

Git LFS 好处
Section titled “Git LFS 好处”- 对于日常使用 Git 的习惯不造成影响。
- 减小本地 Git 缓存所占用的存储空间。
- 加快
git fetch或git pull的速度。 - 加快在 commit 之间切换的速度。
Git LFS 使用方式
Section titled “Git LFS 使用方式”scoop install git-lfsbrew install git-lfs# 检查$ git lfs --version
# 初始化工程,开启$ git lfs install$ git lfs install --local
# 将 .png 文件格式设置为被 Git LFS 管理的格式# 或者直接编辑 .gitattributes$ git lfs track "*.png"# 添加所有需要追踪的文件类型(一次性添加多个扩展名)$ git lfs track "**/*.{psd,ai,tiff,raw,sketch,mp4,mp3,zip,rar,sql,pdf}"
# 确认追踪规则$ git lfs track
# 查看当前 commit 有哪些文件被认为是 LFS 文件$ git lfs ls-files
# 剪除存放于本地的 LFS 文件中那些旧版本的版本, 释放一些硬盘存储空间$ git lfs prune
# 关闭$ git lfs uninstall --local参考资料:Git LFS 大文件存储
git-extras 常用命令
Section titled “git-extras 常用命令”git-extras 是一组有用的 Git 扩展命令,旨在简化常见的 Git 工作流程和任务。
# --- 工具版本与帮助 ---$ git extras --version # 查看 git-extras 版本号(缩写:-v)$ git extras --help # 查看 git-extras 帮助文档(缩写:-h)
# --- 仓库基础与信息查询 ---$ git info # 显示当前仓库详细信息(作者、提交数、分支、最后提交等)$ git root # 输出当前 Git 仓库的根目录绝对路径$ git summary # 输出当前仓库的摘要信息(提交总数、作者排名、活跃天数等)$ git count # 统计提交次数$ git line-summary # 按作者汇总代码行数的增加与减少量$ git effort # 统计每个文件的提交次数与活跃度(柱状图展示)$ git churn # 统计文件修改频率
# --- 快捷网页跳转 ---$ git browse # 浏览器中打开当前项目的远程仓库页面$ git browse-ci # 浏览器中打开当前项目的 CI 页面
# --- 分支与合并增强 ---$ git bclean # 删除已合并到当前分支的其他本地分支$ git bulk # 在多个 Git 仓库中批量执行指定命令$ git delta # 列出当前分支与指定分支之间有差异的文件列表$ git merge-into # 将 A 分支合并到 B 分支(无需切换到 B 分支)$ git merge-repo # 将外部 Git 仓库合并到当前仓库的指定目录并保留历史$ git pull-request # 创建 GitHub/GitLab 的 Pull Request
# --- 日志、历史与站会 ---$ git changelog # 依据提交历史生成或更新 CHANGELOG.md$ git commits-since # 查看指定时间点以来的所有提交记录$ git graft # 合并指定分支到当前分支并删除原分支$ git standup # 展示指定作者最近的提交记录
# --- 提交控制与进度管理 ---$ git undo # 撤销最后一次提交,保留修改至暂存区(同 git reset --soft HEAD~1)$ git wip # 创建临时提交以保存当前未完成的工作进度$ git unwip # 撤销 wip 临时提交并恢复工作区$ git bug # 创建 bug 修复分支,修复完成后自动合并并删除该分支
# --- 代码清理与安全删除 ---$ git clear # 强制清理所有未追踪的文件和目录(比 git clean -fd 更彻底) # [注意] 无法恢复$ git fresh # 强制拉取远程最新代码并丢弃本地所有未提交修改 # [注意] 覆盖本地,慎用$ git obliterate # 从所有历史提交中彻底删除指定文件 # [注意] 涉及历史重写,需强推远程
# --- 文件锁定与防误触 ---$ git locked # 列出被锁定的文件(assume-unchanged 标记)$ git lock # 锁定指定文件,使其不参与版本追踪与提交$ git unlock # 解锁指定文件
# --- 仓库初始化与发布 ---$ git setup # 初始化本地 Git 仓库并交互式配置远程仓库$ git release # 自动执行发布流程:打 Tag、推送到远程、生成 Release$ git ignore # 将指定规则或文件追加至 .gitignore 文件$ git alias # 配置和查看 Git 别名# --- 工具版本与帮助 ---$ git-extras --version # 查看 git-extras 版本号(缩写:-v)$ git-extras --help # 查看 git-extras 帮助文档(缩写:-h)
# --- 仓库基础与信息查询 ---$ git-info # 显示当前仓库详细信息(作者、提交数、分支、最后提交等)$ git-root # 输出当前 Git 仓库的根目录绝对路径$ git-summary # 输出当前仓库的摘要信息(提交总数、作者排名、活跃天数等)$ git-count # 统计提交次数$ git-line-summary # 按作者汇总代码行数的增加与减少量$ git-effort # 统计每个文件的提交次数与活跃度(柱状图展示)$ git-churn # 统计文件修改频率
# --- 快捷网页跳转 ---$ git-browse # 浏览器中打开当前项目的远程仓库页面$ git-browse-ci # 浏览器中打开当前项目的 CI 页面
# --- 分支与合并增强 ---$ git-bclean # 删除已合并到当前分支的其他本地分支$ git-bulk # 在多个 Git 仓库中批量执行指定命令$ git-delta # 列出当前分支与指定分支之间有差异的文件列表$ git-merge-into # 将 A 分支合并到 B 分支(无需切换到 B 分支)$ git-merge-repo # 将外部 Git 仓库合并到当前仓库的指定目录并保留历史$ git-pull-request # 创建 GitHub/GitLab 的 Pull Request
# --- 日志、历史与站会 ---$ git-changelog # 依据提交历史生成或更新 CHANGELOG.md$ git-commits-since # 查看指定时间点以来的所有提交记录$ git-graft # 合并指定分支到当前分支并删除原分支$ git-standup # 展示指定作者最近的提交记录
# --- 提交控制与进度管理 ---$ git-undo # 撤销最后一次提交,保留修改至暂存区(同 git reset --soft HEAD~1)$ git-wip # 创建临时提交以保存当前未完成的工作进度$ git-unwip # 撤销 wip 临时提交并恢复工作区$ git-bug # 创建 bug 修复分支,修复完成后自动合并并删除该分支
# --- 代码清理与安全删除 ---$ git-clear # 强制清理所有未追踪的文件和目录(比 git clean -fd 更彻底) # [注意] 无法恢复$ git-fresh # 强制拉取远程最新代码并丢弃本地所有未提交修改 # [注意] 覆盖本地,慎用$ git-obliterate # 从所有历史提交中彻底删除指定文件 # [注意] 涉及历史重写,需强推远程
# --- 文件锁定与防误触 ---$ git-locked # 列出被锁定的文件(assume-unchanged 标记)$ git-lock # 锁定指定文件,使其不参与版本追踪与提交$ git-unlock # 解锁指定文件
# --- 仓库初始化与发布 ---$ git-setup # 初始化本地 Git 仓库并交互式配置远程仓库$ git-release # 自动执行发布流程:打 Tag、推送到远程、生成 Release$ git-ignore # 将指定规则或文件追加至 .gitignore 文件$ git-alias # 配置和查看 Git 别名