如何在GitHub上传大文件(≥100M)
学习工作中,有时会遇到需要将一些资源上传到GitHub的仓库(repository)上去,比如一些训练完的模型。但GitHub对于直接上传的文件有大小限制,超过100M的文件需要使用Git LFS才能上传。以下是我根据各位大神和自己的实操经历,总结的上传流程。
如何在GitHub上传大文件(≥100M)
- 一、下载Git客户端
- 二、下载Git LFS (Git Large File)客户端
- 三、上传文件
一、下载Git客户端
1、官网链接:https://git-scm.com/downloads/
2、安装过程:
基本上是一路默认Next,除了(以下步骤根据版本不同会有差别,但基本相同):
(1) 选择是否添加快捷方式到桌面
其中桌面浏览(Windows Explorer integration):选择浏览源码的方法,使用bash 或者Git GUI工具。
(2) 根据自己的情况,选择程序的安装目录
(3) 开始菜单快捷方式目录:设置开始菜单中快捷方式的目录名称, 也可以选择不在开始菜单中创建快捷方式。
(4) 设置环境变量,选择使用何种命令行工具,有三个选项:Git自带的Git Bash命令行工具、Windows系统的命令行工具、两者都要。一般默认使用Git Bash就可以了。
3、安装完毕
在开始菜单可以看到:
二、下载Git LFS (Git Large File)客户端
1、官网链接:https://git-lfs.github.com/
2、安装:双击安装应用程序,然后自行选择安装目录即可。如:
三、上传文件
1、准备工作:
(1)在电脑中自选目录新建一个文件夹(例:D:/Git/test3);
(2)在GitHub上新建一个仓库(Repositories),GitHub有官方教程:
2、打开Git Bash,进入刚刚新建的文件夹:
1
|
cd /d/Git/test3
|
回车
3、初始化仓库:
1
|
git init
|
回车,就会出现:
这个时候你打开你刚刚新建的文件夹,就会看到生成一个新的 .git文件夹(如果看不到,可能是被隐藏起来了,找到上方菜单中“隐藏的项目”,打勾就行了。)
4、安装git lfs(一个仓库里面执行一次就好了)
1
|
git lfs install
|
回车
5、将需要上传的文件放置test3文件夹中,跟踪一下你要上传(push)的文件或指定文件类型(以指定文件model.h5为例)
1
|
git lfs track “*.h5” 或者 git lfs track “model.h5”
|
回车
6、添加.gitattributes(配置文件,缺少它执行其他git操作可能会有问题,具体作用不详述)
1
|
git add .gitattributes
|
回车
PS:最终上传完毕后会在GitHub上看到:
7、添加要上传(push)的文件
1
|
git add model.h5
|
(如果文件名中间有空格,用双引号引起来,如git add “CNN model.h5”) 回车
8、提交(commit)
1
|
git commit -m “任意文字”
|
git status 之后是红色说明还没有保存任何
git add
文件名字变绿色就可以跳到到上传了
查看连接 git remote -v
上传 git push origin master
回车
PS:题外话,“任意文字”是用于最终上传成功后github上文件的描述:
9、将本地与新建仓库进行配对
1
|
git remote add origin https:github.com/H****/****.git
|
回车
获取仓库地址:
10、生成密钥,放在远程仓库
1
|
ssh-keygen -t rsa -C 38*******@qq.com
|
回车
会出现下图,回车三次即可
打开新生成密钥的文件的地址,可以看到:
用写字板打开id_rsa.pub文件并复制其中内容。
11、在GitHub上新建SSH key
操作:
(1)
(2)
12、让上传看起来更连续,而不是多出很多无用的merge commit
1
|
git pull –rebase origin master
|
回车
13、正式上传
1
|
git push -u origin master
|
回车(静静等待即可,会受网络影响,最好不要使用VPN)
14、上传成功
git push 出现Everything up-to-date 解决方法
如果你之前没有提交过文件,而你在git push的时候出现Everything up-to-date,并且文件也没有提交上去.可能是因为你没有git add 和 git commit.
需要重新执行:
git remote add roigin https://github.com/ 【github地址】
git add .
git commit -m “message”
git push origin master
假如出现如下提示,必须强制PUSH
刚创建的github版本库,在push代码时出错:
$ git push -u origin master To [email protected]:******/Demo.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to '[email protected]:******/Demo.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') hint: before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
网上搜索了下,是因为远程repository和我本地的repository冲突导致的,而我在创建版本库后,在github的版本库页面点击了创建README.md文件的按钮创建了说明文档,但是却没有pull到本地。这样就产生了版本冲突的问题。
有如下几种解决方法:
1.使用强制push的方法:
$ git push -u origin master -f
这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。
2.push前先将远程repository修改pull下来
$ git pull origin master
$ git push -u origin master
3.若不想merge远程和本地修改,可以先创建新的分支:
$ git branch [name]
然后push
$ git push -u origin [name]