奇怪的Git实践

最近在做一些奇怪的事情…主要是老项目太大导致sourcetree卡,想了想用一个鸡贼的方法就是直接归档历史然后另起一个新项目。

首先尝试直接复制项目出来,发现不行…主要是submodule信息丢了~然后网上找了一个很鸡贼的方法:

说穿了比较简单,先找到历史上第一个commit然后soft reset过去,最后amend last commit覆盖到第一个commit即可

git rev-list --max-parents=0 --abbrev-commit HEAD
git reset --soft xxxx

然后参考How to remove unused objects from a git repository?清理下本地仓库,推送到新的远程仓库即可…

后来还在尝试lfs相关,看看能不能在项目里用起来(将老项目转换过去),结果发现了不少坑:

  • 网上不少资料Use BFG to migrate a repo to Git LFS, convert exsisting git repository to git-lfs都推荐用BFG这个工具,但是用了下发现这货会在每个文件夹下生成lfs配置,完全没法用。后来看github文档发现应该用git-lfs-migrate这货…
  • 因为我本地项目非常大,转换完了之后推送出现了error: unable to rewind rpc post data - try increasing http.postBuffer,要用 git config --global http.postBuffer绕开
  • 推送到gitlab之后发现服务器上多个lfs项目竟然是共用文件夹,而且删除项目之后lfs objects依然存在…开发者表示这些功能以后会加
  • 重新checkout的时候有概率发生lfs 404…蛋疼
  • 打开git lfs之后发现这玩意儿平常都占了不少硬盘访问资源,依然不知道为啥…

综上,感觉自己打开方式不太对,准备过段时间等等再说(逃