分类 git 中的文章

玩转大体积 Git 仓库

大体积 Git 仓库一般有两类:一类有着非常长的 Commit 历史,一类二进制文件占用空间较大,也有可能两者兼而有之。这类仓库系统时间消耗、磁盘占用等都超过普通仓库,怎么样才能减少操作过程中带来的不便呢?

Commit 历史非常长的 Git 仓库

技巧一:shallow clone

git clone --depth n remote-url

shadow clone 仅仅克隆最新的 n 条 Commit 记录到本地,大大节省了时间和空间开销。

……

阅读全文

浅识 .gitattributes

.gitattributes 位于 Git 仓库的根目录下,用于对特定文件的属性进行设定。

* text=auto

默认设置所有文件是文本类型时,Checkout 时换行符转换为 Unix 换行符 LF,不是文本类型时,不作改变。

.vimrc text eol=lf
.gvimrc text eol=lf
*.vim text eol=lf
……

阅读全文

从 Git 仓库中永久删除文件或目录

我们常用的 git rm 仅对 Working Tree 构成影响,如果想永久的删除仓库中的文件或目录,那么就要用到 git filter-branch 命令了。git filter-branch 会检索整个 Commit 历史,逐一改写 Commit Object,重构整个 Tree。

git filter-branch --tree-filter 'rm -rf path/folder' HEAD
git filter-branch --tree-filter 'rm -f path/file' HEAD
……

阅读全文