以下所有命令都在git bash中进行,如何安装git bash可以参考这篇博客。
1.错误1:git提交代码出现错误fatal: Unable to create ‘项目路径/.git/index.lock’: File exists.
rm -f ./.git/index.lock
2.错误2:failed to push some refs to 'ssh://git@localhost:*/user/project.git’
在git使用时,需要将本地修改的代码提交到远程库时,push时却出现以下错误
To ssh://git@localhost:*/user/project.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'ssh://git@localhost:*/user/project.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
这是为什么呢?
原因是,在你关联本地库和远程库以后,两者的文件是一致的,之后,你修改了本地库的文件,同时远程库的文件也被你修改了。当两者都有修改的时候,由push方(这里是本地库)来先做远程库和本地库的合并之后,再提交本地库的修改到远程库。因此需要在commit和push之间,做pull操作,即按以下步骤提交修改:
git add *
git commit -m 'change'
git pull
git push origin master
输出的log中没有error或hint,提交成功啦恭喜(**ps**:其实当出现错误时,输出的log中都已经告诉大家解决方案啦)
3.错误3:remote: error: GH001: Large files detected.
在使用git push时有时出现下面的错误:
remote: error: GH001: Large files detected.
You may want to try Git Large File Storage - https://git-lfs.github.com.
这是为什么呢?其实这是因为你要push的文件太大,超过git的上传限制了。
根据提示, 我们知道需要安装Git LFS。这个是Github的官方“大文件支持库”,下面提供给大家windows下的安装步骤:
##Git LFS在windows下的安装步骤
**1.Git Lfs的下载地址 **
https://git-lfs.github.com/
2.下载完成后,按照普通软件安装步骤,一直next安装即可
3.然后打开Git Bash,输入git lfs install,出现以下提示说明安装完成
使用Git LFS上传大文件
接着我们要上传刚刚上传失败的大文件了。
1.在你要上传的文件目录下,输入git lfs track ‘filename’
注意git lfs track 'filename’的filename指你要上传的文件夹或文件名字,下面我以上传文件夹data为例
2.然后在你当前目录下会生成1个隐藏文件.gitattributes,如果你想查看,可以输入ls -al来查看
3.然后输入git add data
4.将其提交git commit -m ‘first’
5.push到github中,git push -u origin master
提交成功啦~恭喜(PS:如果还没有提交成功的话,那么就参考错误4,如下)
4.错误4:已经安装了Git LFS,但是仍然出现不能上载超过100MB文件的问题,错误提示是“ this exceeds GitHub’s file size limit of 100.00 MB …”
我参考了这篇文章,发现原来是我之前失败的提交记录还在,导致现在不能用LFS服务成功提交,但是按照这个博主说的git reset的方法回退到以前的版本的做法比较繁琐,我干脆之间从头开始重新提交了。具体做法是:
1.将本地的要上传到github上的项目中.git文件和其他由于git bash指令自动生成的.*文件都删除了。
2.然后删除github中原先和本地关联的项目地址
(PS:如何删除github中的项目,我直接转载了别人的文章,看这里。)
3.再在github中新建项目仓库,得到http的地址 https://github.com/XXX/XXX.git
4.接着对本地项目库重新git init,具体操作如下
git init
git remote add origin https://github.com/XXX/XXX.git
5.然后再分别提交“小于100MB的文件” 和 “大于100MB的文件”
其中小于100MB的文件直接 git add
其中大于100MB的文件使用 git lfs track 'xxx’来提交,(PS:XXX表示文件名,提交方式可以参考本篇文章的错误3的解决方案)
值得注意的是,如果你要提交的是文件夹,而文件夹里面有很多个超过100MB的文件,那么直接track这个文件夹的话,很容易push超时,那么我们可以分别track这个文件夹中的各个文件,单独push,这样会比较容易成功!比如下面的方式:
git lfs track XXX/xxx.npz
git add XXX/xxx.npz
git commit -m 'add big data'
git push -u origin master