ssh同时使用github和gitlab/删除Git中的大文件

Jiafeng

分类: github 497 1

ssh同时使用github和gitlab

  1. ssh文件存储于当前操作系统用户目录的.ssh目录下,没有就自己建一个,切换到该目录下

    cd ~/.ssh/
  2. 生成ssh密钥

    1. 生成Gitlab密钥,三次回车对应的文件为id_rsa和id_rsa.pub
    ssh-keygen -t rsa -C "gitlab的邮箱"
    1. 生成GitHub密钥,执行后输入github_id_rsa,后面两次回车,对应文件为github_id_rsa
    ssh-keygen -t rsa -C "github的邮箱"
  3. 配置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
  4. 在gitlab、github中配置公钥,复制*.pub中的内容配置到ssh keys

  5. 测试

    1. 测试gitlab ssh -T git@gitlab
    2. 测试github ssh -T git@github

注意!如果测试gitlab不成功或者一直需要输入密码,请注意看公司使用的地址端口一般不使用22端口,所以需要按以下命令测试:

    ssh -T git@gitlab -p 端口号
  1. 不通的处理方法
    1. 执行如下命令 ssh-agent bash
    2. 然后再执行 ssh-add ~/.ssh/id_ras 即可。

删除Git中的大文件

  1. 首先找出git中前五大的文件

    git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5
  2. 第一行的字母其实相当于文件的id,用以下命令可以找出id 对应的文件名

    git rev-list --objects --all | grep 8f10eff91bb6aa2de1f5d096ee2e1687b0eab007
  3. 使用以下命令,删除历史提交过的大文件

    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/

  4. 清理和回收空间

    rm -rf .git/refs/original/
    git reflog expire --expire=now --all
    git gc --prune=now
    git gc --aggressive --prune=now
  • 0人 Love
  • 0人 Haha
  • 0人 Wow
  • 2人 Sad
  • 0人 Angry
github

作者简介: Jiafeng

共 1 条评论关于 “ssh同时使用github和gitlab/删除Git中的大文件”

Loading...