使用 Git-Analyze 玩转 Git

前言

昨天红薯在码云团队群里面问,又没有办法在 J2Cache 存储库中新建一个没有历史记录的分支 (J2Cache 3.0)?并且不清空存储库。小伙伴们大多都说不行,我打开 TIM App 一看,这不就是创建一个 commit 然后让它没有爸爸么?很简单啊,实际上 git 命令就可以做到,但命令非常复杂,我也不记得了,但我们可以使用 git-cheat 来实现,命令非常简单:

git-cheat new_branch commit_msg

git-cheat 是笔者开发的 git-analyze 中的一个工具,本文的目的就是告诉各位如何使用它来做一些无聊的事情。

Git-Analyze 简介

笔者在前面写过 Git Analyze 工具实现与原理码云 Git Analyze 工具集更新,所以简介和原理也就不多说了,这里主要是介绍怎么玩耍。

TODO

Git-Analyze 工具

git-analyze 工具可以分析当前的存储库从什么时候将大文件引入到存储库中,是哪儿伙计没有注意引入了,文件路径是什么,大家都知道码云迫于服务器负载和存储压力,对用户的存储库配额有一定的限制,超过配额导致用户访问出现限制时有发生。用户可以使用 git-analyze 工具分析存储库并使用 git-rollback 或者 git filter-branch 这样的工具将存储库体积缩小,并情况远程存储库,重新推送即可重新访问。Usage 如下:

OVERVIEW: GIT analyze tools
Usage: git-analyze <options>...] [--] [<pathspec>...] [<refs|branches> ...]
OPTIONS:
  -h [--help]      print usage and exit
  --limitsize      set analyze engine limit blob size
  --warnsize       set analyze engine warn blob size
  --timeout        set analyze engine lifycycle
  --who            show who is commit author
  --all            analyze will scanf all refs

截图如下:

输入图片说明

Git-Rollback 工具

Rollback 工具作用比较鸡肋,可以使用 git-reset 或者魔改 .git/refs/$branch,但还是说一下,Usage 如下:

OVERVIEW: GIT rollback tools
Usage: git-rollback <options>...] [--] [<pathspec>...] [<refs|branches> ...]
OPTIONS:
  -h [--help]      print usage and exit
  --git-dir        set rollback repository path
  --backid         set rollback commit id
  --backrev        set rollback current back X rev
  --refname        set rollback current reference name
  --force          force gc prune

Rollback 分支不会把当前 worktree 修改弄丢。当然 git filter-branch 更牛逼了。

Git-Complete 工具

此工具的作用是刷满一年的贡献度,你也可以从某一年刷到某一年。

git-complete dir branch 'commit message' 2018

Git-Cheat

git-cheat 可以基于当前分支创建一个只有一个 commit 的分支,此分支的提交信息,树对象等都与当前分支 一致,但没有父提交。很容易看到的一个场景是,用户清理项目后,创建一个提交,然后在此提交的基础上 使用 git-cheat 开源。

命令格式:

git-cheat branch commit-message

这个命令会将当前分支的 tree 拷贝过去,如果你不需要这些文件,可以先新建一个分支,在分支中删除所有的文件,提交,然后再使用 git-cheat 去操作存储库。

Pre-commit 钩子

这个钩子主要是拦截大文件提交。截图如下:

总结

如果有人觉得有意思或者有什么问题,可以打开 Issues 反馈 https://gitee.com/oscstudio/git-analyze/issues。也可以在 Issues 中提交新的功能请求。

猜你喜欢

转载自my.oschina.net/GIIoOS/blog/1818153