上次分享了使用git bash上传文件到github,今天更一下传到gitee
之前跟着乐哥学习了基于知识图谱的多轮对话系统,这边想把代码上传到gitee
此文记录一下上传的心酸历程哈哈哈哈
## 1.步骤一
gitee上面的用户名
$ git config --global user.name "keli_cyz"
```bash
$ git config --global user.email "3030@qq.com"
```
这里特别说明一下,这个地方的邮箱是你需要在gitee的设置的邮箱设置那里去绑定一下
如果你前面两步已经设置完成,那执行下面的代码你会看到:
```bash
$ git config --list
```
## 2.步骤二
```bash
cd (你要上传的文件位置)D:\kbqa
```
```bash
$ git init
```
```bash
$ git add .
```
```bash
$ git commit -m "初次上传"
```
这三步准备工作都和之前上传到github上面类似
## 3.步骤三
### 坑一
```bash
$ git remote add origin https://gitee.com/keli-cyz/bqa.git
```
这里你把https://gitee.com/keli-cyz/bqa.git替换成你gitee新建的仓库的链接
注意这里会出现让你输入用户名和密码的情况,如下图所示
这里报错的原因是因为 **这里它让你输入的用户名是你之前绑定的邮箱**,而不是你的用户名,一定要小心,密码就是你登录gitee的密码了
## 4.步骤四
```bash
$ git push -u origin master -f
```
执行这一步等待一会儿,就大功告成了
但真的结束了吗?怎么敢的呀!现在就来说一下如果执行步骤四报错的情况
## 5.步骤五
**处理报错**
### 5.1情况一
这种错误是因为上传的项目过大,gitee不允许
解决办法:
```bash
$ git config --local http.postBuffer 524288000
```
这步简单来说就是增加缓存
如果你有幸执行了上面这步,那么你打开你上传项目路径里面的.git文件里面的config就可以看到如下结果:
### 5.2情况二
```bash
$ git push -u origin master -f
```
当你已经由于项目过大执行了5.1的代码之后,发现你再去执行push操作,还是报错,如图所示:
那恭喜你,你得删除一些大的文件了,操作如下:
```bash
$ git rev-list --objects --all | grep 2704173005554035e57d92420ea5623022fd6db0
```
上面这个代码你要换成报错里面**蓝色的那一串**,即(git rev-list --objects --all | grep **数字**),目的就是找到你需要删除文件在你上传的文件的位置,比如我,运行之后:
可以看出来我是 KBQA-for-Diagnosis/knowledge_extraction/baiduie_training_data/bert_model.ckpt.data-00000-of-00001 这个文件需要删除,那就删除
**我的做法是现在项目文件里面把那个文件删除了,然后执行力下面这个代码**
```bash
$ git filter-branch --tree-filter 'rm -f KBQA-for-Diagnosis/knowledge_extraction/baiduie_training_data/bert_model.ckpt.data-00000-of-00001' HEAD
```
**但是报错了**
git 抱怨 “Cannot rewrite branches: You have unstaged changes.”
**这个错误解决方法是**:
```bash
$ git stash
```
再执行:
```bash
$ git filter-branch --tree-filter 'rm -f KBQA-for-Diagnosis/knowledge_extraction/baiduie_training_data/bert_model.ckpt.data-00000-of-00001' HEAD
```
正确删除的结果如下所示:
现在再执行push就可以上传成功了!!!!!!!!!!!!!!!!
```bash
$ git push -u origin master -f
```
**PS(后话)**:
现在觉得其实不用自己去文件里面删除了,直接执行这串代码就行,然后再push
```bash
$ git filter-branch --tree-filter 'rm -f KBQA-for-Diagnosis/knowledge_extraction/baiduie_training_data/bert_model.ckpt.data-00000-of-00001' HEAD
```
```bash
$ git push -u origin master -f
```
### 5.3其他错误
当你在执行删除大文件的时候出现这个错误:
也就是出现Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f这句话的时候,说明之前曾经执行过 git filter-branch,然后在 refs/original/ 有一个备份,这个时候只要删掉那个备份即可
**解决方式:**
```bash
git update-ref -d refs/original/refs/heads/master
```
然后你再重新执行删除操作的代码
```bash
$ git filter-branch --tree-filter 'rm -f KBQA-for-Diagnosis/knowledge_extraction/baiduie_training_data/bert_model.ckpt.data-00000-of-00001' HEAD
```
最后你再push:
```bash
$ git push -u origin master -f
```
OK啦~~~~~撒花!!!!!!!!!!!!!!
如果后续又遇到什么问题再进行补充