github连接到本地
git安装
创建github用户
ssh连接
本地设置用户名和邮箱
git config --global user.name "username"
git config --global user.email "test@gmail.com"
sudo apt-get install ssh
生成SSH密钥,邮箱是配置相同的地址,这里有三个回车就好
ssh-keygen -t rsa -C "test@gmail.com"
会在~/.ssh目录下生成本地密钥,查看公开密钥,复制到github
cd ~/.ssh
cat id_rsa.pub
github设置SSH连接
登陆github
- 点击右上角的头像会出现一个 Setting选项
- 进入Account Setting页面后看到左边的列表
- 点击SSH and GPG keys选项
- 点击SSH keys右边绿色(New SSH key)的按钮
- 跳转到新页面将你复制的内容(id_rsa.pub)粘贴到Key的文本框中,Title可以随便取
- 点击绿色(Add SSH key)按钮
- 页面会跳转回之前的界面,如果成功会显示一串字符(SHA256算法加密的身份验证),可以看到这串字符和之前创建ssh时的fingerprint是完全一致的
验证
第一次运行时要输入一个yes
ssh -T git@github.com
传输大文件
一般会有其他的数据集仓库保存,类似Hugging Face,但是git里面也会有图片,PDF之类,还是需要大文件传输
为了成功上传大于100M的文件到github中,需要使用Git LFS工具。
下载安装Git LFS
在Git LFS官网Git Large File Storage上下载Git LFS客户端并安装。
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
在git仓库中启用lfs,在git仓库目录中
git lfs install
输出
Updated git hooks.
Git LFS initialized.
使用git lfs跟踪大文件,会自动生成隐藏文件.gitattributes
git lfs track A.pdf
将大文件和.gitattributes添加到代码区,并push到远程代码仓库
git add A.pdf
git add .gitattributes
git commit -m "Add A.pdf and .gitattributes ."
git push origin master
git的一些报错
! [remote rejected] main -> main (pre-receive hook declined)
error: 无法推送一些引用到 'git@github.com:××××/××××.git'
重新git clone,然后复制推送不了的修改文件到clone的文件夹中,重新git push
提交大文件出现问题
已经通过git提交过的大文件,再次使用lfs提交一次,可能会报错
知道未提交大文件的最后一次commit时的方法
退回提交前的版本
git reset ******(此处填未提交A.pdf时的commit状态哈希值,可以只填前6位)
重新提交
不确定未提交大文件的最后一次commit时的方法
将大文件删除,然后,重写commit并清理回收空间,再重新提交
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch A.pdf' --prune-empty --tag-name-filter cat -- --all
如果此时报错:(作者未尝试)
Cannot rewrite branches: Your index contains uncommitted changes.
使用如下命令解决:
git stash
清理和回收空间
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now