首先本地已经存在代码文件夹了,想要上传到github备份
第一步: github 建立 repo,可以添加readme 和 gitignore文件
第二步:打开本地文件夹 ,首先执行
git init #初始化本地git仓库
git remote add origin git@***
#将远程仓库和本地仓库git连接起来,origin是远程仓库的别名,也可以改成其他的名称
这个时候已经可以进行add commit 和 push 操作了,但由于初始化仓库时建立了readme和gitignore文件,所以需要先将这两个文件pull下来,执行
git pull origin master
#将远程仓库的readme和gitignore 拉取下来,origin 是刚刚设定的远程仓库的别名,master是要pull的分支名
接着执行
git add .#add
git commit -m '注释'#commit
git push -u origin master #第一次push,-u代表将origin仓库的master分支设为默认push分支,以后执行git push 时默认push到该分支
后续补充:在github建立repo时可以选择同时建立 .gitignore 文件,选择主要使用的代码可以自动建立默认的gitignore文件,不用自己从头开始写,只需要根据自己的目录做细微的调整即可。
git status 可以看到在添加gitignore文件前的当前目录下文件追踪状态,
vim .gitignore进入文件添加配置,配置基本规则如下,详细可看Git - gitignore Documentation
https://git-scm.com/book/zh/v2
1)/mtk/ 过滤整个文件夹
2)*.zip 过滤所有.zip文件
3)/mtk/do.c 过滤某个具体文件
需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中:
1)!*.zip
2)!/mtk/one.txt
唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。
为什么要有两种规则呢?想象一个场景:假如我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理,那么我们就需要使用:
1)/mtk/
2)!/mtk/one.txt
基本规则写好后
git status 查看文件追踪状态
已经忽略掉glove的两个文件夹了。
重要的是如果在添加gitignore文件前已经将部分文件进行了push操作,会导致gitignore无法忽略掉已经push的文件,这个时候需要移除所有问题的追踪状态,然后再重新add. commit push 即可
git rm --cached .
git add .
git commit -m "again"
git push
rm -f /.git/index.lock
删除index.lock文件即可
原因:在进行某些比较费时的git操作时自动生成,操作结束后自动删除,相当于一个锁定文件,目的在于防止对一个目录同时进行多个操作。有时强制关闭进行中的git操作,这个文件没有被自动删除,之后你就无法进行其他操作,必须手动删除。add整个目录时自己中断了操作,导致lock没有自己解除
git remote -v #查看当前绑定的远程仓库地址
git remote rm origin #将当前绑定的远程仓库origin删除
git remote add origin git@ $将新的仓库地址与本地绑定
git rm -r -n --cached test -n可以查看会被删除的文件
git rm -r --cached test 确认文件无误后进行删除
git commit -m 'rm test' 开始删除
git push origin master 推送到远程仓库