ssh同时使用github和gitlab/删除Git中的大文件
分类: github 497 1
ssh同时使用github和gitlab
-
ssh文件存储于当前操作系统用户目录的.ssh目录下,没有就自己建一个,切换到该目录下
cd ~/.ssh/
-
生成ssh密钥
- 生成
Gitlab
密钥,三次回车对应的文件为id_rsa和id_rsa.pub
ssh-keygen -t rsa -C "gitlab的邮箱"
- 生成
GitHub
密钥,执行后输入github_id_rsa,后面两次回车,对应文件为github_id_rsa
ssh-keygen -t rsa -C "github的邮箱"
- 生成
-
配置config文件 在.ssh目录下新增一个config文件,配置私钥
# gitlab Host gitlab HostName 此处填公司域名或地址 User git IdentityFile ~/.ssh/id_rsa #github Host github HostName github.com User git IdentityFile ~/.ssh/github_id_rsa
-
在gitlab、github中配置公钥,复制*.pub中的内容配置到ssh keys
-
测试
- 测试gitlab ssh -T git@gitlab
- 测试github ssh -T git@github
注意!如果测试gitlab不成功或者一直需要输入密码,请注意看公司使用的地址端口一般不使用22端口,所以需要按以下命令测试:
ssh -T git@gitlab -p 端口号
- 不通的处理方法
- 执行如下命令 ssh-agent bash
- 然后再执行 ssh-add ~/.ssh/id_ras 即可。
删除Git中的大文件
-
首先找出git中前五大的文件
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5
-
第一行的字母其实相当于文件的id,用以下命令可以找出id 对应的文件名
git rev-list --objects --all | grep 8f10eff91bb6aa2de1f5d096ee2e1687b0eab007
-
使用以下命令,删除历史提交过的大文件
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch xxx/xxx/' --prune-empty --tag-name-filter cat -- --all
上面脚本中的xxx/xxx/请换成你第一步查出的大文件名,或者这里直接写一个目录。如写成data/ezlive_a_apk/
-
清理和回收空间
rm -rf .git/refs/original/ git reflog expire --expire=now --all git gc --prune=now git gc --aggressive --prune=now
共 1 条评论关于 “ssh同时使用github和gitlab/删除Git中的大文件”