博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 Git-Analyze 玩转 Git
阅读量:6705 次
发布时间:2019-06-25

本文共 3032 字,大约阅读时间需要 10 分钟。

  hot3.png

前言

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

git-cheat new_branch commit_msg

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

Git-Analyze 简介

笔者在前面写过 和 ,所以简介和原理也就不多说了,这里主要是介绍怎么玩耍。

TODO

Git-Analyze 工具

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

OVERVIEW: GIT analyze toolsUsage: git-analyze 
...] [--] [
...] [
...]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 toolsUsage: git-rollback 
...] [--] [
...] [
...]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 开源。

命令格式:

OVERVIEW: Make a special git branch: git-cheatUsage: git-cheat [options] OPTIONS:  -g,--git-dir          Git repository dir,default open pwd, pos 0  -b,--branch           New branch name, pos 1  -m,--message          New commit message, pos 2  -p,--parent           The new branch tree is based on which commit/branch.  -t,--tree             Subtree or current commit root tree.  -d,--date             New commit time.  -a,--author           New commit author, default use old author.  -c,--committer        New commit committer, default use old author.  -e,--author-email     Author email.  -E,--committer-email  Committer email.SWITCH:  -k,--keep             Keep commit signature.  -v,--version          Print version information and exit.  -V,--verbose          Print verbose message.  -h,--help             Print help information and exit.example:  git-cheat . tool "new tools branch" --tree tools #new branch tool base subtree tools.

Update 2018-05-28 目前 git-cheat 支持使用特定的子树新建分支,这意味着,我们可以无损的将存储库的特定分支特定 commit 特定子目录新建一个新的分支用于开源或者重新开发等其他目的。

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

Pre-commit 钩子

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

总结

如果有人觉得有意思或者有什么问题,可以打开 Issues 反馈 。也可以在 Issues 中提交新的功能请求。

转载于:https://my.oschina.net/GIIoOS/blog/1818153

你可能感兴趣的文章
利用Scikit-Learn和Spark预测Airbnb的listing价格
查看>>
数据建模NoSQL数据库的概念和对象建模符号
查看>>
微软宣布Azure Function支持Python
查看>>
3·15曝光丨智能机器人一年拨打40亿个骚扰电话,6亿人信息已遭泄露!
查看>>
ArchSummit深圳2016大会7折售票最后一周
查看>>
2019年React学习路线图
查看>>
Google Docs API正式可用,可自动化文档任务和内容管理
查看>>
全面了解大数据“三驾马车”的开源实现
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
人工智能白热化,运维脱帽“背锅侠”
查看>>
Android中使PopupWindow显示在指定控件的上下左右!
查看>>
html中ul标签的优化
查看>>
Kurento安装与入门05——One to many video call
查看>>
[deviceone开发]-cnodejs论坛移动端App
查看>>
智能指针shared_ptr(effective modern c++笔记)
查看>>
Failed to validate a newly established connection异常
查看>>
关联对象 AssociatedObject 完全解析
查看>>
Windows下80端口被pid为4的System进程占用解决方法
查看>>
POST 后台404错误
查看>>
Ubuntu 解压zip文件名乱码问题解决
查看>>