git常用命令及github如何提交大文件

批量添加文件:

git add .   添加新文件和被修改文件,不包括被删除文件,包括子目录,但是不包括空目录,并且会根据.gitignore做过滤

git add * 会忽略.gitignore把任何文件都加入

git add -u  监控已经被add的文件, 不会提交新文件

git add -A  添加所有状态的文件,是上面两个功能的合集

只添加指定文件:

git add filename.txt
git add *.txt

查看文件:

git ls-files  查看已存放文件
git status    查看还没添加的文件

回退:

git reset HEAD <file_name>   未commit,回退某个文件
git checkout -- <file_name>   未commit,回退某个文件
git checkout .  未commit,回退本地所有修改的。没有的提交的,都返回到原来的状态
git checkout <commit HASH>  回退到hash码指定的版本

git reset --hard <commit HASH>  已commit, 返回到某个节点,不保留修改。
git reset --soft <commit HASH>  已commit, 返回到某个节点,保留修改

git reset --hard HEAD^    已commit,回退到上一个版本, HEAD 和当前 branch 切到上一条commit 
git reset --hard HEAD     表示回退当前版本,HEAD指向当前版本

强制覆盖:

    git fetch --all

    git reset --hard origin/master

    git pull

#去掉回车换行转换
git rm -r --cached .   注意 这里是有 "." 的,  ". " 代表当前目录
git config core.autocrlf false

提交设置:

git config --global user.name "your git account name"
git config --global user.email "your email  with which registered on git"

提交:

git commit -m  "..."   提交新文件

git commit -am "..." 只提交修改了的文件

git push

git push -u origin master

查看远程服务器地址URL:
git remote -v

提交大文件报错,假若当前提交含有大文件:

git add .
git commit -m "Initial commit"
git push

提示:Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com

先安装git-lfs:

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
git reset
apt-get install git-lfs
git lfs install

然后,首先对已经commit的大文件执行回退,也就是回退到上一次的提交点,在项目的本地主目录下执行git log查看commit历史,并获取上次commit对应的序列号,然后执行 git reset <序列号>回退到上一次提交点:

     git log     

执行后可以看到类似下面的内容:      

    然后执行 git reset  134a93525c9a2f194edede3f373dd9d7d07cb1a6 回退到commit大文件之前的上一次提交点,再执行下面的步骤(如果不reset到commit大文件之前的上一次提交点,即使执行下面的步骤,在git push时还是会出错,因为已经commit的大文件在git push时会被和.gitattributes文件一起提交,导致每次git push都会失败,仍然报上面的错误):

     对所有的大文件执行git lfs track "filename"和git add .gitattributes,例如git lfs track "*.caffemodel"把需要提交的文件加入track,这一步成功后会生成一个gitattributes文件:

    git lfs track models/c3d/c3d_ucf_model-4999.caffemodel    #生成.gitattributes

    git add .gitattributes   #添加并commit gitattributes文件

    git commit -am "gitattr for big file"  #需要先将 .gitattributes文件单独commit并push,
    git push           #push时需三次输入用户好口令. 

完成.gitattributes文件的提交之后,再进行提交大文件
    git add  models/c3d/c3d_ucf_model-4999.caffemodel
    git commit -m "training iteration 4999 of c3d model"
    git push   

#如果上面在为.gitattributes文件执行git push时还报上面的"Large files detected. You may want to try Git Large File Storage"错,应该是已经commit的大文件混在里面被同时push,这时需要先执行git reset <上一次commit的序列号> 以回退到commit大文件之前的上一次提交点,或者,先备份文件,然后执行下面这个非常危险的命令,完全删除本地的所有文件退回到初始状态,然后再track、add和commit以及push: 
   git reset --hard origin/master

执行git lfs ls-files查看有无已被track的文件,可以看到没有任何文件被track了。

然后重做上面的步骤(从git lfs track <大文件>  开始)提交大文件即可。

在git push 大文件时可能还会报LFS locking API 错,按照提示disable掉它即可:

文件太大,在push的过程中也可能会多次报connection refused的错:

    这个错误没什么,就是再多试几次就可能一次性上传成功了。  

 

如果因为某些原因某个目录下的文件没有提交,再次git add和commit时说没有任何更新而提交不了,可以先清理这个目录,然后再git add和commit和push:
git rm -r --cached <dir_path>
git add <dir_path>

git commit -m "..."
git push

下载多个submodule中断后继续下载,例如:

git clone --recursive https://github.com/Microsoft/onnxruntime
git submodule update --init --recursive --progress

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页